2
A
回答
7
传感器TYPE_MAGNETIC_FIELD
和TYPE_ACCELEROMETER
很好地检测到(因为TYPE_ORIENTATION
现在已被弃用)。
你将需要:
几个矩阵:
private float[] mValuesMagnet = new float[3];
private float[] mValuesAccel = new float[3];
private float[] mValuesOrientation = new float[3];
private float[] mRotationMatrix = new float[9];
一个监听器捕捉传感器发送的值(这将是SensorManager.registerListener()
的说法,你将不得不调用设置您的传感器):
private final SensorEventListener mEventListener = new SensorEventListener() {
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
// Handle the events for which we registered
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
System.arraycopy(event.values, 0, mValuesAccel, 0, 3);
break;
case Sensor.TYPE_MAGNETIC_FIELD:
System.arraycopy(event.values, 0, mValuesMagnet, 0, 3);
break;
}
};
你还需要计算方位,俯仰和横滚:
SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel, mValuesMagnet);
SensorManager.getOrientation(mRotationMatrix, mValuesOrientation);
mValuesOrientation
然后填充有:
mValuesOrientation[0]
:方位角,绕Z轴的旋转。mValuesOrientation[1]
:俯仰,围绕X轴旋转。mValuesOrientation[2]
:滚动,围绕Y轴旋转。
检查documentation of getOrientation()以了解如何定义坐标轴。您可能需要使用SensorManager.remapCoordinateSystem()
重新定义这些轴。
0
这取决于你想检测什么,如果你想检测到手机已经在一个旋转中移动,那么加速计可能是你最好的选择。 如果你想检测到手机现在旋转,然后方向。
相关问题
- 1. Android旋转编程哪个传感器?
- 2. 我旋转我的手机 - Android传感器值保持不变
- 3. Android传感器旋转到度
- 4. 用于旋转3D立方体的Android方向传感器
- 5. 传感器融合:寻找旋转矢量需要哪些传感器?
- 6. 使用旋转矢量传感器
- 7. 如何计算Android手机相对于手机的旋转度
- 8. 使用陀螺仪和磁性传感器旋转Rajawali相机
- 9. 如何使用Android传感器计算旋转角度?
- 10. 如何在Android中使用旋转传感器
- 11. Box2d传感器旋转问题
- 12. 运动传感器,读取旋转
- 13. 安卓传感器直立旋转
- 14. 在Android中使用手机内置的传感器
- 15. 使用Android手机定位Zigbee传感器
- 16. 手机7的API支持哪些传感器?
- 17. 6旋转伺服电机的超声波传感器
- 18. 智能手机中的传感器
- 19. 手机旋转时列表消失(Android)
- 20. 磁传感器和Android中的图像旋转
- 21. Android传感器手波检测
- 22. 用于OpenGL的Android传感器
- 23. 带增强型接近传感器的Android手机
- 24. 通过智能手机的蓝牙传感器的力量android
- 25. Android手机和传感器之间的USB通信
- 26. Android传感器,检测手机的位置和相对移动
- 27. 三星android手机的传感器采样频率
- 28. 如何在android中停止滑盖手机中的传感器?
- 29. 准确的智能手机传感器Android
- 30. 电子医疗传感器连接到Android手机
这是完美的。谢谢。 – richard
当我这样做时,音高永远不会达到180°。它从0°开始(平坦的,面向天空),然后在手机朝向我时移至90°,然后在朝向地面时移回90°。这是一种预期的行为?我怎么知道设备是在盯着天空还是地板呢? – Joan