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

Android Sony SmartWatch 2:需要在运行时更改supportsLowPowerMode(),android,sony,sony-smartwatch,Android,Sony,Sony Smartwatch,我有一个用于SW2的应用程序,它有一个用户选项,用于决定该应用程序是否应使用低功耗模式(LPM)。这很好用。问题是,SW API只在我的应用程序首次启动时调用一次supportsLowPowerMode()注册方法。这意味着,如果用户以后更改我的应用程序中的设置,它将在整个shebang重新启动之前不会生效 我尝试了一些技巧(比如杀掉我的应用程序进程)来强制重新加载,但到目前为止没有任何效果。我最后的办法是告诉用户,他/她需要重新启动手机,然后才能生效,但这是非常愚蠢的。有更好的方法吗?解决方案

我有一个用于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手表面


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

据我所知,在运行时无法更改这一点。让我和我的团队再核实一下,以防有什么我不知道的方法。

嗯。我想我昨天对此发表了评论,但现在它消失了。为您或团队提出的后续问题:建议使用什么方法让SW2重新加载supportsLowPowerMode()的返回值?除了重新启动手机之外,还有什么会触发这种情况吗?谢谢确认一旦扩展设置为支持低功耗模式,则在运行时无法在不重新启动扩展的情况下对其进行更改。您不必重新启动手机,只需退出分机并重新启动即可。不幸的是,退出然后重新启动是目前唯一的解决方案。您所说的“退出扩展”是什么意思?我尝试了从stopRequest()调用到在Android系统级别终止进程的所有方法,但都没有可靠的效果。就像这个值已经缓存在主机端,只有重新启动才会刷新缓存。很抱歉,我误解了我们团队中某个人的响应。注册类中的方法仅在第一次运行扩展时由SmartConnect调用一次。之后,这些值会像您注意到的那样缓存在SmartConnect中。清除缓存的唯一方法是重新启动手机或重新安装分机。