【发布时间】:2015-07-01 13:17:39
【问题描述】:
我正在开发一款可穿戴应用,但我发现了一个奇怪的行为。
我有一个课程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:所以我的问题是为什么 onSensorChanged() 方法在环境模式下并且未连接到 USB 时没有被调用?
我已经设法在未连接到 USB 并且在环境模式下使用 Activity 中的手动唤醒锁定强制 onSensorChanged()
wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
但是
Q2:Activity不应该通过ambientMode机制自动获取wakeLock吗?
任何建议将不胜感激:)
【问题讨论】:
标签: android service android-sensors ambient