Android重力感应简介
Android系统手机有很多重力感应游戏的应用,包括弹球,赛车等等游戏,android开发中共有8中传感器,包括:
传感器名称如下:
加速度传感器(accelerometer)
陀螺仪传感器(gyroscope)
环境光照传感器(light)
磁力传感器(magnetic field)
方向传感器(orientation)
压力传感器(pressure)
距离传感器(proximity)
温度传感器(temperature)
当然有些手机是不全部包含这些传感器的,我们在开发是可以先在手机上进行测试,一般用的最多的就是重力传感器和方向传感器,现在我就分析一下重力传感器的简单应用:
- 重力传感器:在Android手机中,将屏幕左下角的坐标设为原点,横向为X轴,纵向为Y轴,屏幕正上方为Z轴的正方向,在重力传感器中将得到3个参数X,Y,Z,其范围都在--10到+10之间,以X轴为例,当X轴正方向指向天时,X=10,指向地时X=--10,水平时X=0;Y轴和Z轴也是如此,所以当手机平放时,X=Y=0;Z=10
1.首先获得手机传感器管理对象
sensorMgr=(SensorManager)getSystemService(SENSOR_SERVICE);
2.取得要用的管理器的类型
sensor=sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
这里 TYPE_ACCELEROMETER是加速度传感器
3.实例化一个监听器
4.在要用传感器的时候注册监听器,不用的时候取消注册
代码实现如下:
package second.gravity;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.Toast;
public class SecondSensor extends Activity {
//传感器管理器对象
private SensorManager sensorMgr;
//传感器对象,此处用的是加速度传感器
private Sensor sensor;
//得到的各方向的加速度
private float x,y,z;
//创建Activiy
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//得到当前手机的管理器对象
sensorMgr=(SensorManager)getSystemService(SENSOR_SERVICE);
//得到加速度传感器对象
sensor=sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
//实例化传感监听器,其中包含2个必须实现的方法
SensorEventListener lsn=new SensorEventListener(){
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
//得到加速度
x=event.values[SensorManager.DATA_X];
y = event.values[SensorManager.DATA_Y];
z = event.values[SensorManager.DATA_Z];
}
};
//添加一个触屏监听器,触屏式显示X,Y,Z的值
public boolean onTouchEvent(MotionEvent event){
if(event.getAction()==MotionEvent.ACTION_DOWN){
//注册监听器,参数分别是监听器对象,传感器对象,检测的精准度
//精准度越精确,检测的频率越高,细微的行,x,y,z检测的更精确
sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
String str = "x=" + x + "; y=" + y + "; z=" + z;
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
}
return super.onTouchEvent(event);
}
//当Activiy激活时注册监听器
public void onResume(){
sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
super.onResume();
}
//当Activiy暂停时取消注册
public void onPause(){
sensorMgr.unregisterListener(lsn);
super.onPause();
}
}
敬请大家期待我的重力感应小游戏,一周后完成。
分享到:
相关推荐
Android 重力感应游戏-疯狂的小球源码程序,基于Android 平台的重力感应游戏-疯狂的小球。
android重力感应源代码
android 利用重力感应监听 微修改代码可以解决 来电时翻转手机后静音。
Android 重力感应 示例 源码 sensor
Android重力感应Demo
Android 重力感应游戏-疯狂的小球
Android手机平台重力感应Demo Android手机平台重力感应Demo Android手机平台重力感应Demo
android_重力感应demo,主要打印重力感应x,y,z,适合初学者研究重力感应数据变化规律
本程序是实现Android手机控制小车程序的前一段重力感应的源程序。
android重力感应开发demo
Android重力感应跑步测速应用.rar
android 重力感应摇骰子游戏 ,在真机上运行
一款android重力感应源代码,里面有详细的讲解。
重力感应装置包括感应器、处理器和控制器三个部分。感应器负责侦测存储器的状态,计算存储器的重力加速度值;处理器则对加速度值是否超出安全范围进行判断;而控制器则负责控制将磁头锁定或者释放出安全停泊区。一旦...
Android重力感应跑步测速应用.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android 重力感应控件一个可以重力感应更新试图的控件可以用来当作 emptyview 和 errorview
Android 重力感应的测试程序源码.zip