android加速度传感器

加速度传感器原理:加速度传感器数值可通过onSensorChanged(SensorEvent event)中event.values获得。返回的是float数组单位m/s^2。

                               加速度传感器的X轴沿着手机屏幕向右(手机左边在下,数值为正)。上面数组的第一个为传感器X轴的加速度值。

                                加速度传感器的Y轴沿着手机屏幕向上(手机下边在下,数值为正)。。上面数组的第二个为传感器Y轴的加速度值。

                                加速度传感器的Z轴垂直于手机屏幕向上(手机屏幕朝上,数值为正)。。上面数组的第三个为传感器Z轴的加速度值。

编程操作:1、通过(SensorManager)getSystemService(Context.SENSOR_SERVICE);返回传感器管理器sensormanager。

                  2、通过sensormanager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)返回加速度传感器对象。

                  3、在onResume()中注册加速度传感器监听器 sensormanager.registerListener(this,

                       sensormanager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME) 。

                    其中SensorManager.SENSOR_DELAY_GAME为传感器数据的频率SENSOR_DELAY_FASTESTSENSOR_DELAY_GAMESENSOR_DELAY_NORMALSENSOR_DELAY_UI依次频率减小,但资源消耗的更少。

                  4、在onStop()中取消注册sensormanager.unregisterListener(this)

                  5、通过onSensorChanged(SensorEvent event) 中event.values获得各个方向上加速度的值并做处理。

                  6、onAccuracyChanged(Sensor sensor, int accuracy)为传感器的精度发生改变时触发的事件。accuracy为 sensor改变后的精度。      

参考代码:    

public class SenorActivity extends Activity implements SensorEventListener {
	SensorManager sensormanager;
	EditText editText;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_senor);
        editText=(EditText)findViewById(R.id.edit);
        sensormanager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
        
    }

    /* (non-Javadoc)
	 * @see android.app.Activity#onResume()
	 */
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		sensormanager.registerListener(this, sensormanager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);
	}

	/* (non-Javadoc)
	 * @see android.app.Activity#onStop()
	 */
	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		sensormanager.unregisterListener(this);
	}

	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_senor, menu);
        return true;
    }

	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
		// TODO Auto-generated method stub
		
		
	}

	@Override
	public void onSensorChanged(SensorEvent event) {
		// TODO Auto-generated method stub
		float[] values=event.values;
		StringBuilder sb=new StringBuilder();
		sb.append("X方向上的加速度");
		sb.append(values[0]+"\n");
		sb.append("Y方向上的加速度");
		sb.append(values[1]+"\n");
		sb.append("z方向上的加速度");
		sb.append(values[2]+"\n");
		editText.setText(sb.toString());
	}

    
}


      

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值