function isDeviceMoving(threshold, durationMs) {
var Thread = java.lang.Thread;
var context = android.app.ActivityThread.currentApplication().getApplicationContext();
var sensorManager = context.getSystemService(android.content.Context.SENSOR_SERVICE);
var gyroSensor = sensorManager.getDefaultSensor(android.hardware.Sensor.TYPE_GYROSCOPE);
var motionDetected = false;
var listener = new android.hardware.SensorEventListener({
onSensorChanged: function(event) {
var x = event.values[0];
var y = event.values[1];
var z = event.values[2];
var magnitude = Math.sqrt(x*x + y*y + z*z);
if(magnitude > threshold) {
motionDetected = true;
}
},
onAccuracyChanged: function(sensor, accuracy) {}
});
sensorManager.registerListener(listener, gyroSensor, android.hardware.SensorManager.SENSOR_DELAY_NORMAL);
Thread.sleep(durationMs);
sensorManager.unregisterListener(listener);
return motionDetected;
}
// 示例调用:阈值 0.1 rad/s,检测 5 秒
isDeviceMoving(0.1, 5000);判断设备是否处于运动状态