有没有办法在android服装的表盘中获得指标的可见性?

时间:2015-11-03 14:54:29

标签: android wear-os watch-face-api

我为Android服装创建了一个新的表盘。

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

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

这里我设置了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()

或者听众中是否有某些方法? 我找不到这样的东西..

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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;
}