Android Sensor 入门
ALFADev工作室原创文章如转载,请注明:转载自博客原文地址:http://blog.csdn.net/kongre/article/details/6731129每一部搭载Android智能操作系统的设备都具有一系列传感器的集合。其中最标准的两种传感器分别为Accelerometer Sensor(加速度计传感器)和Magnetometer Sensor(磁力计传感器)。当然Andr...
ALFA Dev工作室原创文章如转载,请注明:转载自博客原文地址:http://blog.csdn.net/kongre/article/details/6731129
每一部搭载Android智能操作系统的设备都具有一系列传感器的集合。其中最标准的两种传感器分别为Accelerometer Sensor(加速度计传感器)和Magnetometer Sensor(磁力计传感器)。当然Android设备当中还可能集中了其他类型的传感器,例如:Temperature Sensor(温度传感器),Proximity Sensor(距离临近传感器)等等其他类型的传感器。
一、Android 目前支持以下几种类型传感器:
二、怎么样获取当前设备某一特定类型传感器的列表(以Accelerometer Sensor为例)
public class SensorActivity extends Activity{
private static final String TAG = "SensorActivity";
//declare all ui widgets
Button getSpecifiedSensorListBtn;
private SensorManager sensorManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//create references to all ui widgets
getSpecifiedSensorListBtn = (Button)findViewById(R.id.firstTest);
//initialize the sensorManager
sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
getSpecifiedSensorListBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
//iterate the sensor list
for(Sensor sensor : sensorList){
Log.d(TAG, "the name of the sensor:" + sensor.getName() + "\t type:" +
((sensor.getType() == Sensor.TYPE_ACCELEROMETER) ? "ACCELEROMETER Sensor" :
"Other Sensor"));
}
}
});
}
}
控制台日志输出如下:
三、怎么样获取传感器当中的数据(例如:获取X,Y,Z轴的三个不同方向的加速度)
在介绍使用传感器事件监听器之前,我们先简单介绍一下SmartPhone的三维坐标系:
X-axis:水平方向的,正数值代表右边,负数值代表右边;
Y-axis:垂直方向的,正数值代表上边,负数值代表下边;
Z-axis:指向手机屏幕的前段界面的外边。
下面我们开始编写代码,获取不同方向的加速度的值:
public class SensorEventDemo extends Activity {
private SensorManager sensorManager;
//declare all ui widgets
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listen_accelerometer);
//create all references to ui widgets
tv= (TextView)findViewById(R.id.attitude);
sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
}
private final SensorEventListener sensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
tv.setText("x轴加速度:" + event.values[0] +
"\ny轴加速度:" + event.values[1] +
"\nz轴加速度:" + event.values[2]
);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
@Override
protected void onResume() {
sensorManager.registerListener(sensorEventListener,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_UI);
super.onResume();
}
@Override
protected void onPause() {
sensorManager.unregisterListener(sensorEventListener);
super.onPause();
}
}
下面为真机运行显示结果:
最后如果你还是觉得我写的不够详细 看的不够爽 不要紧我把源代码的下载地址贴出来 欢迎大家一起讨论学习ALFA Dev工作室希望可以和大家一起进步。
下载地址:http://download.csdn.net/source/3559419
更多推荐
所有评论(0)