也就是说现在获取用户方向有两种方式,一是官方推荐的,通过SensorManager.getOrientation()来获取,这个方法表面看似容易(那是因为你还没看到他的参数。。一会再说),但实际上需要用到两个感应器共同完成工作,特点是更加的准确。第二种方法非常简单,就像前一篇文章获取加速度一样,直接得到三个轴上的数据。 额,从难一些的介绍
在上面的示例中,首先获取SensorManager实例,并通过getDefaultSensor方法获取加速度传感器和地磁传感器。然后注册传感器监听器,并在onSensorChanged方法中处理传感器数据,并使用getOrientation方法获取设备的方向信息。 getOrientation方法的相关知识 方向信息 getOrientation方法返回一个包含三个浮点值的数组,分别代表设备的方向信息。
GetOrientation GetQuaternionFromVector GetRotationMatrix GetRotationMatrixFromVector GetSensorList RegisterDynamicSensorCallback RegisterListener RemapCoordinateSystem RequestTriggerSensor UnregisterDynamicSensorCallback UnregisterListener SensorManager.DynamicSensorCallback ...
一般情况下,在Android系统中获取手机的方位信息在api中有TYPE_ORIENTATION常量,可以像得到加速度传感器那样得到方向传感器sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);然而我们这样做的话在最新版的SDK中就会看到这么一句话:“TYPE_ORIENTATION This constant is deprecated. use SensorManager.getOrientation() instead. ”...
Google建议我们在应用程序中使用SensorManager.getOrientation()来获得原始数据。 public static float[] getOrientation (float[] R, float[] values) 1. 第一个参数是R[] 是一个旋转矩阵,用来保存磁场和加速度的数据,可以理解为这个函数的传入值,通过它这个函数给你求出方位角。
第一步:得到SensorManager SensorManager mSensorManager = (SensorManager) mContext .getSystemService(Context.SENSOR_SERVICE);12 第二步:注册传感器 Sensor sensor = mSensorManager .getDefaultSensor(Sensor.TYPE_ACCELEROMETER); if (null != sensor) mSensorManager.registerListener(this, sensor, SensorManager...
SensorManager sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);if(sensor!=null){//传感器存在}else{//传感器不存在} 使用Android Market过滤器来限定目标设备必须带有指定传感器配置。
SensorManger sm = (SensorManager).getSystemService(SENSOR_SERVICE); 第二步:为具体的传感器注册监听器 ,这里我们使用磁阻传感器Sensor.TYPE_ORIENTATION. sm,registerListener (this,sm.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_FASTEST); 第三个参数值表示获得传感器数据的速度,SENSOR_...
8.TYPE_ORIENTATION:方向传感器,测量设备围绕三个物理轴(x,y,z)的旋转角度,API显示使用 SensorManager.getOrientation()替代掉了。 9.TYPE_PRESSURE:压力传感器,单位是hPa(百帕斯卡),返回当前环境下的压强。 10.TYPE_PROXIMITY:距离传感器,单位是cm,用来测量某个对象到屏幕的距离,可用于打电话时判断人耳到电话屏幕...
public class SensorActivity extends Activity implements SensorEventListener { private final SensorManager mSensorManager; private final Sensor mAccelerometer; public SensorActivity() { mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYP...