<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                > 編寫:[wly2014](https://github.com/wly2014) - 原文: [http://developer.android.com/training/wearables/data-layer/data-items.html](http://developer.android.com/training/wearables/data-layer/data-items.html) [DataItem](http://developer.android.com/reference/com/google/android/gms/wearable/DataItem.html)是指系統用于同步手持設備與可穿戴設備間數據的接口。一個[DataItem](http://developer.android.com/reference/com/google/android/gms/wearable/DataItem.html)通常包括以下幾點: - **Pyload**- 一個字節數組,你可以用來設置任何數據,讓你的object序列化和反序列化。Pyload的大小限制在100k之內。 - **Path**- 唯一且以前斜線開頭的string (如:"/path/to/data")。 通常不直接實現[DataItem](#),而是: 1. 創建一個[PutdataRequest](#)對象,指明一個string path 以唯一確定該 item。 1. 調用[setData](#)()方法設置Pyload。 1. 調用[DataApi.putDataItem](#)()方法,請求系統創建數據元。 1. 當請求的時候,系統會返回正確實現DataItem接口的對象。 然而,我們建議使用[Data Map](#)來顯示裝在一個易用的類似[Bundle](#)接口中的數據元,而用不是setData()來處理原始字節。 ### 用 Data Map 同步數據 使用[DataMap](#)類,將數據元處理為 Android [Bundle](#)的形式,因此對象的序列化和反序列化就會完成,你就可以以 key-value 對的形式操縱數據。 如何使用: 1. 創建一個 [PutDataMapRequest](#)對象,設置數據元的path。> **Note:** path 字符串對數據元是唯一確定的,這樣能夠使你從另一連接端訪問。Path須以前斜線開始。如果你想在應用中使用分層數據,就要創建一個適合數據結構的路徑方案。 1. 調用[PutDataMapRequest.getDataMap()](#))獲取一個你可以使用的data map 對象。 1. 使用put...()方法,如:[putString()](#)),為data map設置數據。 1. 調用[PutDataMapRequest.asPutDataRequest()](#))獲得[PutDataRequest](#)對象。 1. 調用 [DataApi.putDataItem()](#)) 請求系統創建數據元> **Note:** 如果手機和可穿戴設備沒有連接,數據會緩沖并在重新建立連接時同步。 接下的例子中的increaseCounter()方法展示了如何創建一個data map,并設置數據: ~~~ public class MainActivity extends Activity implements DataApi.DataListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private static final String COUNT_KEY = "com.example.key.count"; private GoogleApiClient mGoogleApiClient; private int count = 0; ... // 創建一個 data map 并設置數據 private void increaseCounter() { PutDataMapRequest putDataMapReq = PutDataMapRequest.create("/count"); putDataMapReq.getDataMap().putInt(COUNT_KEY, count++); PutDataRequest putDataReq = putDataMapReq.asPutDataRequest(); PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(mGoogleApiClient, putDataReq); } ... } ~~~ 有關控制 [PendingResult](http://developer.android.com/reference/com/google/android/gms/common/api/PendingResult.html) 對象的更多信息,請參見 [Wait for the Status of Data Layer Calls](http://developer.android.com/training/wearables/data-layer/events.html#Wait) 。 ### 監聽數據元事件 如果一端的數據層的數據發生改變,想要在另一端被告知此改變,你可以通過實現一個數據元事件的監聽器來完成。 下面例子的代碼片段能夠通知你的app,當定義在上一個例子中的counter的值發生改變時。 ~~~ public class MainActivity extends Activity implements DataApi.DataListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private static final String COUNT_KEY = "com.example.key.count"; private GoogleApiClient mGoogleApiClient; private int count = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Wearable.API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); } @Override protected void onResume() { super.onStart(); mGoogleApiClient.connect(); } @Override public void onConnected(Bundle bundle) { Wearable.DataApi.addListener(mGoogleApiClient, this); } @Override protected void onPause() { super.onPause(); Wearable.DataApi.removeListener(mGoogleApiClient, this); mGoogleApiClient.disconnect(); } @Override public void onDataChanged(DataEventBuffer dataEvents) { for (DataEvent event : dataEvents) { if (event.getType() == DataEvent.TYPE_CHANGED) { // DataItem 改變了 DataItem item = event.getDataItem(); if (item.getUri().getPath().compareTo("/count") == 0) { DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap(); updateCount(dataMap.getInt(COUNT_KEY)); } } else if (event.getType() == DataEvent.TYPE_DELETED) { // DataItem 刪除了 } } } // 我們的更新 count 的方法 private void updateCount(int c) { ... } ... } ~~~ 這個[activity](# "An activity represents a single screen with a user interface.")是實現了[ DataItem.DataListener ](http://developer.android.com/reference/com/google/android/gms/wearable/DataApi.DataListener.html)接口,并在onConnected()方法中增加自身成為數據元事件的監聽者,和在onPause()方法中移除監聽。 你也可以用一個service實現監聽,請見 [Listening for Data Layer Events](#)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看