0

我为 android wear 创建了一个新的表盘。

如果屏幕上显示指示器(丢失连接、负载电池),我想更改表盘上某些元素(文本视图)的可见性。

有没有办法识别这些指标何时可见?

在这里我设置了watchFaceStyle:

setWatchFaceStyle(new WatchFaceStyle.Builder(DigitalWatchFaceService.this)
                        .setAcceptsTapEvents(false)
                        .setCardPeekMode(WatchFaceStyle.PEEK_MODE_SHORT)
                        .setBackgroundVisibility(WatchFaceStyle.BACKGROUND_VISIBILITY_INTERRUPTIVE)
                        .setHotwordIndicatorGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL)
                        .setPeekOpacityMode(WatchFaceStyle.PEEK_OPACITY_MODE_TRANSLUCENT)
                        .setShowUnreadCountIndicator(false)
                        .setStatusBarGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL)
                        .setShowSystemUiTime(false)
                        .build());

有没有类似的东西..:

isStatusBarVisible()

或者

isHotwordIndicatorVisible()

还是听众中有一些方法?我找不到这样的东西..

4

2 回答 2

0

我知道这不是一个好主意,但这是我的解决方案:

检查连接:(问题:这比指标快得多)

Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() {
    @Override
    public void onResult(NodeApi.GetConnectedNodesResult getConnectedNodesResult) {
        if (!getConnectedNodesResult.getNodes().isEmpty()) {
            isConnected = true;
        } else {
                isConnected = false;
        }
    }
});

检查电池:

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = getBaseContext().registerReceiver(null, intentFilter);
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
         status == BatteryManager.BATTERY_STATUS_FULL;

指标:

if (isCharging || !isConnected) {
    isIndicatorVisible = true;
} else {
    isIndicatorVisible = false;
}
于 2015-11-19T02:16:40.343 回答
0

您需要对这些指标如何检测它们是否应该显示进行类似的工作。例如,您需要侦听电池事件并从中推断设备是否在充电器上。对于连接,您需要收听onPeerConnectedon onPeerDisconnected

但总的来说,这似乎不是一个好主意。您永远无法保证不会添加新内容。相反,您应该使用表盘 api 将指示器放置在最适合您的表盘的位置,并在显示内容时完全避开该区域。

于 2015-11-03T20:46:13.770 回答