android – Sony SmartWatch 2:需要在运行时更改supportsLowPowerMode()

我有一个SW2的应用程序,它有一个用户选项,用于应用程序是否应该使用低功耗模式(LPM).哪个工作正常.问题是SW API首次启动时只调用我的应用程序的supportsLowPowerMode()注册方法一次.这意味着如果用户稍后更改了我的应用程序中的设置,则在整个shebang重新启动之前它将不会生效.

我尝试了一些技巧(比如杀死我的应用程序)以强制重新加载,但到目前为止还没有任何工作.我的最后一招是告诉用户他/她需要重新启动手机才能生效,但那真是太棒了.有没有更好的办法?

最佳答案 解决方案不是尝试在运行时更改对supportsLowPowerMode()的响应,而是尝试更改启动和停止扩展.

基本上,如果您的扩展可以支持LPM,那么它应该在supportsLowPowerMode()中返回值true.如果扩展的LPM用法可以改变,那么只需在onActiveLowPowerModeChange()处理程序中执行不同的操作即可处理.具体来说,如果用户选择了不使用LPM,则需要一个如下所示的处理程序:

@Override
public void onActiveLowPowerModeChange(boolean lowPowerModeOn) {
    super.onActiveLowPowerModeChange(lowPowerModeOn);

    if (lowPowerModeOn) {
        // User doesn't want to use LPM, so stop the app on the SW
        stopRequest();
    }
}

这可以在设备的背光关闭时关闭扩展,并且它将回退到默认的LPM表盘.

编辑:我正在重新打开这个,因为我发现上述技术有不可接受的副作用.如果您的应用程序向supportsLowPowerMode()返回false,则当手表进入睡眠状态时,SW2将在后台运行(但暂停).这意味着,当用户“唤醒”SW2时,您的应用会立即重新出现在屏幕上.调用stopRequest()(如上面的代码示例中所示)会中断此行为,要求用户在唤醒SW2后重新打开应用程序.我没有找到任何办法解决这个问题;我们需要的是pauseRequest(),但API却没有.

点赞