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