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

时间:2014-03-31 00:48:18

标签: android sony sony-smartwatch

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

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

2 个答案:

答案 0 :(得分:1)

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

基本上,如果您的扩展程序支持LPM,那么它应该在true中返回supportsLowPowerMode()的值。如果扩展程序的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表盘。

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

答案 1 :(得分:1)

据我所知,无法在运行时更改此信息。让我与我的团队仔细检查,以防万一有一种我不知道的方式。