android传感器的使用

一、获得SensorManager对象
           sensorManager  = (SensorManager) getSystemService(  SENSOR_SERVICE  );
二、获得想得到的传感器(这里获得的是加速传感器)
            sensor  =  sensorManager .getDefaultSensor(Sensor. TYPE_ACCELEROMETER );
          如果想知道设备上所有的传感器,可以使用
           List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
           for(Sensor sensor:sensors)
           {
                     System.out.println(sensor.getName()+"::"+sensor.getVendor()+"::"+sensor.getType());
       }    
          TYPE_ALL代表返回设备所有传感器对象,然后用循环输出传感器的名字等信息,
          常用的传感器因手机设备不同而不同,三星S5830上的所有传感器信息如下
          

三、创建监听器
          sensorEventListener  =  new  SensorEventListener() {
                  
                    public  void  onSensorChanged(SensorEvent event) {
                        System.  out .println( "---"  +event. values [0]);
                        System.  out .println( "---"  +event. values [1]);
                        System.  out .println( "---"  +event. values [2]);                        
                  }                   
                    public  void  onAccuracyChanged(Sensor sensor,  int  accuracy) {
                          //  TODO  Auto-generated method stub                         
                  }             
            };   
四、为传感器绑定监听器

         sensorManager .registerListener( sensorEventListener  , sensor  , SensorManager. SENSOR_DELAY_NORMAL  );   

这样当传感器数据发生变化时就会将事件信息封装成一个event对象传递给监听器,通过监听器中的回调函数实现数据的获取与处理

完整代码如下

package com.android.activity;
import java.util.List;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.app.Activity;
public class SensorActivity extends Activity {
	SensorManager sensorManager = null;
	Sensor sensor = null;
	SensorEventListener sensorEventListener=null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_sensor);
		sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
		//输出设备上所有传感器信息
		List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);		
		for(Sensor sensor:sensors){
			System.out.println(sensor.getName()+"::"+sensor.getVendor()+"::"+sensor.getType());
		}	
		//获取加速度传感器
		sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
		//声明监听器
		sensorEventListener = new SensorEventListener() {			
			public void onSensorChanged(SensorEvent event) {
				System.out.println("---"+event.values[0]);
				System.out.println("---"+event.values[1]);
				System.out.println("---"+event.values[2]);				
			}
			
			public void onAccuracyChanged(Sensor sensor, int accuracy) {
				// TODO Auto-generated method stub				
			}		
		};		
		
		//给传感器绑定监听器
		sensorManager.registerListener(sensorEventListener,sensor, SensorManager.SENSOR_DELAY_NORMAL);
	}
	@Override
	protected void onPause() {
		//在这里需要将绑定的监听器释放,否则即使程序退出监听程序仍会继续
		sensorManager.unregisterListener(sensorEventListener);
		super.onPause();
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值