0
A
回答
0
爲了做到這一點,您需要在方向上註冊SensorEventListener,然後將回調添加到onSensorChanged方法。邏輯可能看起來非常類似於這裏實現的指南針:http://www.vogella.com/articles/AndroidSensor/article.html,除了您要檢查sensorEvent的值是否爲ROTATION_0,ROTATION_90,ROTATION_180或ROTATION_270並相應採取行動。
您還可能需要存儲以前的屏幕方向,以便檢查旋轉是180度旋轉還是90度旋轉。
4
我是這樣做:
package com.example.accsensordemo.service;
import android.app.Service;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Vibrator;
import android.util.Log;
public class MotionControlService extends Service implements SensorEventListener {
private static final String TAG = "MotionControlService";
private float mGZ = 0;//gravity acceleration along the z axis
private int mEventCountSinceGZChanged = 0;
private static final int MAX_COUNT_GZ_CHANGE = 10;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand, Started: " + mStarted);
if (!mStarted) {
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_GAME);
mStarted = true;
}
return START_STICKY;
}
@Override
public void onSensorChanged(SensorEvent event) {
int type = event.sensor.getType();
if (type == Sensor.TYPE_ACCELEROMETER) {
float gz = event.values[2];
if (mGZ == 0) {
mGZ = gz;
} else {
if ((mGZ * gz) < 0) {
mEventCountSinceGZChanged++;
if (mEventCountSinceGZChanged == MAX_COUNT_GZ_CHANGE) {
mGZ = gz;
mEventCountSinceGZChanged = 0;
if (gz > 0) {
Log.d(TAG, "now screen is facing up.");
} else if (gz < 0) {
Log.d(TAG, "now screen is facing down.");
}
}
} else {
if (mEventCountSinceGZChanged > 0) {
mGZ = gz;
mEventCountSinceGZChanged = 0;
}
}
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}
相關問題
- 1. Android檢測從手機轉向
- 2. Android傳感器,檢測手機的位置和相對移動
- 3. 從手機Android檢測ADB
- 4. Android - 手機邊緣檢測
- 5. Android手機位置API
- 6. JSFL:檢測元素翻轉的時間
- 7. html/js/jquery檢測到不宜手機的位置
- 8. 使用手機檢測用戶站在房間裏的位置
- 9. 檢測手機中的虛假/模擬位置?
- 10. 檢測用戶位置的智能手機應用程序
- 11. 手機的位置
- 12. 檢測Android用戶位置
- 13. Android webview位置檢測javascript
- 14. 如何在Unity中檢測android手機的旋轉?
- 15. 檢測Android手機在電池電量不足時關機
- 16. Android手機之間的位置交換
- 17. 在安裝位置上的Android手機
- 18. Android手機的屏幕位置發現
- 19. 通過Javascript/jQuery檢測Android手機
- 20. Android:檢測用戶篡改手機
- 21. Android檢測到手機鎖定事件
- 22. 在Android手機上測試GPS當前位置
- 23. 如何在我的android手機上測試翻譯
- 24. Android手勢檢測
- 25. 分辨率太高時檢測手機
- 26. 安卓手機靜止時檢測
- 27. 如何檢測手機何時放下
- 28. 手機鎖定時獲取用戶在Android中的位置
- 29. 檢測android webview的URL位置變化
- 30. 查找手機的位置
我想檢測z平面旋轉。這可能是xy平面。無論如何,我發現解決方案[這裏](http://android-er.blogspot.in/2011/02/detect-phone-flipping.html) – Naddy
有沒有辦法檢測到它沒有服務,而是通過
powder366