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);

判断设备是否处于运动状态
 
 
Back to Top