最近一段时间就在研究这个android手机上重力感应的游戏,现在总算是搞定了,跟大家分享一下吧:
大家应该对重力感应的游戏应该不陌生吧,简单想想也能知道那是一会怎么回事儿!就是通过手机左右晃动而控制游戏中的物体的运动,我们只要知道这个重力感应的监听类在哪里就可以摸索出它的运动方式了!再了解其中界面的切换是怎样交互的,还有图片是怎么样绘制上去的就OK了!
重力感应的类就是在android.hardware包下面的Sensor,SensorEvent,SensorEventListener这三个类!
界面的监听和图片的绘制就要用到android.view.SurfaceHolder;android.view.SurfaceHolder.Callback;android.view.SurfaceView···等等。
背景音乐的添加用到这个类就行了android.media.MediaPlayer;
这里就将一个小小的重力感应的测试放上来看看吧:
重力感应测试 写道
public class SensorActivity extends Activity {
//感应器管理器
private SensorManager sensorMgr;
//得到加速感应器
Sensor sensor;
//定义各坐标轴上的重力加速度
private float x, y, z;
//创建activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//得到当前手机传感器管理对象
sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
//加速重力感应对象
sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
//实例化一个监听器
SensorEventListener lsn = new SensorEventListener() {
//实现接口的方法
public void onSensorChanged(SensorEvent e) {
//得到各轴上的重力加速度
x = e.values[SensorManager.DATA_X];
y = e.values[SensorManager.DATA_Y];
z = e.values[SensorManager.DATA_Z];
//在标题处显示出来
setTitle("X轴上的重力加速度为:"+x+","+"Y轴上的重力加速度为:"
+y+","+"Z轴上的重力加速度为:"+z);
}
public void onAccuracyChanged(Sensor s, int accuracy){}
};
//注册listener,第三个参数是检测的精确度
sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
}
}
//感应器管理器
private SensorManager sensorMgr;
//得到加速感应器
Sensor sensor;
//定义各坐标轴上的重力加速度
private float x, y, z;
//创建activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//得到当前手机传感器管理对象
sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
//加速重力感应对象
sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
//实例化一个监听器
SensorEventListener lsn = new SensorEventListener() {
//实现接口的方法
public void onSensorChanged(SensorEvent e) {
//得到各轴上的重力加速度
x = e.values[SensorManager.DATA_X];
y = e.values[SensorManager.DATA_Y];
z = e.values[SensorManager.DATA_Z];
//在标题处显示出来
setTitle("X轴上的重力加速度为:"+x+","+"Y轴上的重力加速度为:"
+y+","+"Z轴上的重力加速度为:"+z);
}
public void onAccuracyChanged(Sensor s, int accuracy){}
};
//注册listener,第三个参数是检测的精确度
sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
}
}
后面就是我的重力感应的游戏了!