Android Sensor 入门

来源:互联网 发布:客所思kx2a mac 编辑:程序博客网 时间:2024/06/01 08:34

转自http://www.linuxidc.com/Linux/2011-08/41926.htm

每一部搭载Android智能操作系统的设备都具有一系列传感器的集合。其中最标准的两种传感器分别为Accelerometer Sensor(加速度计传感器)和Magnetometer Sensor(磁力计传感器)。当然Android设备当中还可能集中了其他类型的传感器,例如:Temperature Sensor(温度传感器),Proximity Sensor(距离临近传感器)等等其他类型的传感器。
 
一、Android 目前支持以下几种类型传感器:
 


二、怎么样获取当前设备某一特定类型传感器的列表(以Accelerometer Sensor为例)
 
1.public class SensorActivity extends Activity{ 
2.    private static final String TAG = "SensorActivity"; 
3.    //declare all ui widgets  
4.    Button getSpecifiedSensorListBtn; 
5.     
6.    private SensorManager sensorManager; 
7.    @Override 
8.    public void onCreate(Bundle savedInstanceState) { 
9.        super.onCreate(savedInstanceState); 
10.        setContentView(R.layout.main); 
11.        //create references to all ui widgets  
12.        getSpecifiedSensorListBtn = (Button)findViewById(R.id.firstTest); 
13.        //initialize the sensorManager  
14.        sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 
15.         
16.        getSpecifiedSensorListBtn.setOnClickListener(new OnClickListener() { 
17.             
18.            @Override 
19.            public void onClick(View v) { 
20.                  List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); 
21.                  //iterate the sensor list  
22.                  for(Sensor sensor : sensorList){ 
23.                      Log.d(TAG, "the name of the sensor:" + sensor.getName() + "\t type:" + 
24.                              ((sensor.getType() == Sensor.TYPE_ACCELEROMETER) ? "ACCELEROMETER Sensor" : 
25.                                            "Other Sensor")); 
26.                  } 
27.            } 
28.        }); 
29.    } 
30.}
 
控制台日志输出如下:
 


本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-08/41926.htm

三、怎么样获取传感器当中的数据(例如:获取X,Y,Z轴的三个不同方向的加速度)
 
在介绍使用传感器事件监听器之前,我们先简单介绍一下SmartPhone的三维坐标系:
 
X-axis:水平方向的,正数值代表右边,负数值代表右边;
 
Y-axis:垂直方向的,正数值代表上边,负数值代表下边;
 
Z-axis:指向手机屏幕的前段界面的外边。
 


下面我们开始编写代码,获取不同方向的加速度的值:
 1.public class SensorEventDemo extends Activity { 
 2.    private SensorManager sensorManager; 
 3.    //declare all ui widgets  
 4.    TextView tv; 
 5.     
 6.    @Override 
 7.    protected void onCreate(Bundle savedInstanceState) { 
 8.        super.onCreate(savedInstanceState); 
 9.        setContentView(R.layout.listen_accelerometer); 
 10.        //create all references to ui widgets  
 11.        tv= (TextView)findViewById(R.id.attitude); 
 12.         
 13.        sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 
 14.    } 
 15.     
 16.    private final SensorEventListener sensorEventListener = new SensorEventListener() { 
 17.         
 18.        @Override 
 19.        public void onSensorChanged(SensorEvent event) { 
 20.            tv.setText("x轴加速度:" + event.values[0] +  
 21.                    "\ny轴加速度:" + event.values[1] +  
 22.                    "\nz轴加速度:" + event.values[2] 
 23.            ); 
 24.        } 
 25.         
 26.        @Override 
 27.        public void onAccuracyChanged(Sensor sensor, int accuracy) { 
 28.             
 29.        } 
 30.    }; 
 31.     
 32.    @Override 
 33.    protected void onResume() { 
 34.        sensorManager.registerListener(sensorEventListener,  
 35.                                                sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),  
 36.                                                    SensorManager.SENSOR_DELAY_UI); 
 37.        super.onResume(); 
 38.    } 
 39.     
 40.    @Override 
 41.    protected void onPause() { 
 42.        sensorManager.unregisterListener(sensorEventListener); 
 43.        super.onPause(); 
 44.    } 
 45.}
 
下面为真机运行显示结果:
 


最后如果你还是觉得我写的不够详细 看的不够爽 不要紧我把源代码的下载地址贴出来。
 
免费下载地址在 http://linux.linuxidc.com/
 
用户名与密码都是www.linuxidc.com
 
具体下载目录在 /pub/Android源码集锦/2011年/8月/Android Sensor 入门源码/

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-08/41926p2.htm

 

原创粉丝点击