首页 > 代码库 > android方向传感器(SENSOR_TYPE_ORIENTATION)
android方向传感器(SENSOR_TYPE_ORIENTATION)
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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。