设备锁定时,似乎没有注册devicemotion

Dar*_*ava 5 javascript mobile android

我有以下代码,当(移动)设备稍微轻推时会发出蜂鸣声:

let audio = new Audio('ack.mp3');

function handleMotionEvent(event) {
  let x = event.accelerationIncludingGravity.x;
  let y = event.accelerationIncludingGravity.y;    

  if (Math.abs(x) + Math.abs(y) > 2.2) {
    audio.play();
  }
}

window.addEventListener("devicemotion", handleMotionEvent, true);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但在设备锁定时根本不行.在设备锁定时我有什么方法可以检测到这个吗?

Uda*_*mal 4

似乎您必须为该操作获取部分唤醒锁。电源管理器类。

PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);
PowerManager.WakeLock lock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,  "SensorRead");
lock.acquire();
window.addEventListener("devicemotion", handleMotionEvent, true);
Run Code Online (Sandbox Code Playgroud)

您还需要以下权限AndroidManifest.xml

 <uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)

更多信息