我正在开发一个可穿戴应用程序,我注意到一个奇怪的行为。我有一个类FooService extends Service implements SensorEventListener
,我已经覆盖了onSensorChanged()
方法:
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor.getType() != Sensor.TYPE_ACCELEROMETER) {
Log.e(TAG, getString(R.string.err_wrong_sensor_registered));
return;
}
float x = sensorEvent.values[0];
float y = sensorEvent.values[1];
float z = sensorEvent.values[2];
...
}
该服务从FooActivity extends WearableActivity
- 这里我覆盖onEnterAmbient()
,onExitAmbient()
方法只做一些 UI 更改(不与服务交互)。
一切正常我在设备插入 USB 时接到 onSensorChanged() 呼叫,无论是环境模式还是正常模式,但不幸的是,在设备未连接到 USB 时进入环境模式 3 秒后我没有接到呼叫。
Q1:所以我的问题是为什么在环境模式下并且未连接到 USB 时不调用 onSensorChanged() 方法?
在未连接到 USB 和环境模式时,我已经设法在 Activity 中使用手动唤醒锁强制 onSensorChanged()
wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
但
Q2:Activity不应该通过ambientMode机制自动获取wakeLock吗?
任何建议将不胜感激:)