Android中使用加速度传感器
16lz
2021-01-24
在Android中使用加速度传感器可以帮助我们识别手机的姿态及运动状态。
使用加速度传感器与其他传感器的方法大致相同,通过调用系统API就可以实现。分为以下几步:
1.获取SensorManager
2.使用SensorManager获取加速度传感器
3.创建自定义的传感器监听函数,并注册
4.相对应的,在合适位置实现注销监听器的调用
简单的代码如下:
public class MainActivity extends Activity { private static final String TAG = "SensorTest"; private SensorManager mSensorManager; private Sensor mAccelerometer; private TestSensorListener mSensorListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); // 初始化传感器 mSensorListener = new TestSensorListener(); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); } @Override protected void onResume() { super.onResume(); // 注册传感器监听函数 mSensorManager.registerListener(mSensorListener, mAccelerometer, SensorManager.SENSOR_DELAY_UI); } @Override protected void onPause() { super.onPause(); // 注销监听函数 mSensorManager.unregisterListener(mSensorListener); } private void initViews() { mSensorInfoA = (TextView) findViewById(R.id.sensor_info_a); } class TestSensorListener implements SensorEventListener { @Override public void onSensorChanged(SensorEvent event) { // 读取加速度传感器数值,values数组0,1,2分别对应x,y,z轴的加速度 Log.i(TAG, "onSensorChanged: " + event.values[0] + ", " + event.values[1] + ", " + event.values[2]); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { Log.i(TAG, "onAccuracyChanged"); } }}
其中三个轴的方向如图所示:
由于手机会固定受到地球重力加速度,因此传感器的读数是受此影响后的数值。
假如我们的手机是垂直摆放,机头朝上。那么x,z
轴均无加速度,y轴上会固定受到地球重力加速度的影响。
此时,由于y轴向上为正方向,因此重力加速度为负值,y轴的加速度就为:
因此竖直静止时,三轴的加速度近似于:
(ax,ay,az)=(0,9.81,0)
反之在垂直摆放,机头朝下(倒立摆放)时。y轴方向是向下的,因此这时地球加速度为
+9.81
。这种情况下y轴的加速度: ay=a−g=a−9.81
静止时有近似值:
(ax,ay,az)=(0,−9.81,0)
更多相关文章
- Android加速度传感器 -- 抬手亮屏
- Android计步器开发
- Android——摇一摇
- Android传感器的介绍
- Android(安卓)利用方向传感器实现 指南针
- Android中传感器的一些功能
- android传感器模拟 SensorSimulator
- Android传感器介绍及指南针的实现
- Android指南针app的实现原理总结