我正試圖用「搖動」事件掛鉤一些功能。我使用的教程在這裏:無法獲得加速計來感知搖動事件
http://www.vogella.com/articles/AndroidSensor/article.html
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/Sensors.html
我與OpenIntents軟件SensorSimulator測試。我能夠將仿真器連接到SensorSimulator。當我在模擬器中移動設備時,仿真器上的加速度計讀數與模擬器的讀數完全相同。
在我的代碼,我添加了一些日誌之類的語句:
public class ShakeEventListener implements SensorEventListener {
private void getAccelerometer(SensorEvent event) {
float[] values = event.values;
// Movement
float x = values[0];
float y = values[1];
float z = values[2];
float accelationSquareRoot = (x * x + y * y + z * z)
/(SensorManager.GRAVITY_EARTH * SensorManager.GRAVITY_EARTH);
long actualTime = System.currentTimeMillis();
Log.i("onSensorChanged", "accelationSquareRoot: " + accelationSquareRoot);
if (accelationSquareRoot >= 2) //
{
if (actualTime - lastUpdate < 200) {
return;
}
lastUpdate = actualTime;
// Shake Detected
Log.i("onSensorChanged", "Shakie Shakie!");
}
}
public void onSensorChanged(SensorEvent se) {
Log.d("onSensorChanged", "X: " + se.values[SensorManager.DATA_X] +
" Y: " + se.values[SensorManager.DATA_Y] +
" Z: " + se.values[SensorManager.DATA_Z]);
if (se.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
{
getAccelerometer(se);
}
}
}
日誌貓的輸出似乎不一樣,如果我移動設備模擬器改變。它總是顯示這些讀數(讀數不斷更新每分鐘一堆次,但他們總是相同的):
05-22 15:09:07.717: I/onSensorChanged(686): accelationSquareRoot: 1.0006835
05-22 15:09:08.518: D/onSensorChanged(686): X: 0.0 Y: 9.77622 Z: 0.813417
05-22 15:09:08.518: I/onSensorChanged(686): accelationSquareRoot: 1.0006835
我試過APIDemos
樣品sensors.java
但是這也註冊相同的行爲。我可能會錯過什麼?
我已經開始與你鏈接的源,然後我嘗試了其他人(大量的樣本)。沒有什麼似乎爲我工作。 –
您可能需要咬緊牙關,購買真正的手機進行測試。從長遠來看,它也可以節省很多頭痛。 – Nick
它也不適用於該設備。謝謝你的時間。 –