2015-11-03 63 views
0

我爲Android Wear創建了一個新的錶盤。有沒有一種方法可以在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() 

或者是有一些梅索德在監聽? 我找不到像這樣的東西..

回答

0

你需要做類似的工作,以便這些指標如何檢測它們是否應該顯示。例如,您需要監聽電池事件,並從中推斷設備是否在充電器上。對於連接,您需要聽onPeerDisconnected上的onPeerConnected

但總的來說,這似乎不是一個好主意。你從來沒有保證不添加新東西。相反,您應該使用watch face api將指示符放置在適合您手錶最適合的位置,並在顯示內容時完全避免該區域。

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; 
} 
相關問題