我为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()
或者听众中是否有某些方法? 我找不到这样的东西..
答案 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;
}