标签:
SENSOR_TYPE_ORIENTATION这个android 2.2之后就不推荐用了!!!
手机状态 |
数值状态 |
数值范围 |
手机水平放置,顶部指向正北方 |
x、y、z方向值为0 |
0 |
水平逆时针旋转 |
x不断减少 |
360 ~ 0 |
水平顺时针旋转 |
x不断增大 |
0 ~ 360 |
当手机左侧抬起时 |
z不断减少 |
0 ~ -180 |
当手机右侧抬起时 |
z不断增大 |
0 ~ 180 |
当手机顶部抬起时 |
y不断减少 |
0 ~ -180 |
当手机底部抬起时 |
y不断增大 |
0 ~ 180 |
经过实验,我们发现当手机顶部指向正北方时方向值为0,顶部指向正东方时方向值为90,顶部指向正南方时方向值为180,顶部指向正西方时方向值为270。根据这些数据我们就可以根据方向值的范围盘端当前我们的方位,可以确定指南针的读数。
示例代码:
package com.example.sensors; import android.app.Activity; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.widget.TextView; public class MainActivity extends Activity implements SensorEventListener{ private TextView changeText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SensorManager sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE) ; Sensor gyposcope = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); sensorManager.registerListener(this, gyposcope, SensorManager.SENSOR_DELAY_GAME); changeText = (TextView) findViewById(R.id.changeText); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onSensorChanged(SensorEvent event) { Log.i("test", event.values.toString()); changeText.setText(event.values[0]+" "+event.values[1]+" "+event.values[2]); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }
android方向传感器(SENSOR_TYPE_ORIENTATION)
标签:
原文地址:http://blog.csdn.net/liang5630/article/details/42421897