2016-07-23 13 views
0

私はデータレイヤーを使用していくつかの文字列を送信するための腕時計面を持っています。サービスをマニフェストに追加してDataLayerListenerServiceクラスを作成して、guideに従ってきました。WearableListenerService経由で電話機からWearableにデータを送信

サービスからウェアラブルにデータを送信するにはどうすればよいですか?私はPutDataRequestを使用する前にこれを行いました。私は今、定期的にバッテリー統計、気象情報などをウェアラブルに送りたいと思っています。これはどうすればいいですか?ここで

は、これまでのところ、私のクラスである:まず

public class DataLayerListenerService extends WearableListenerService { 

private static final String TAG = DataLayerListenerService.class.getSimpleName(); 
public static final String EXTRAS_PATH = "/extras"; 
private static final String START_ACTIVITY_PATH = "/start-activity"; 
private static final String DATA_ITEM_RECEIVED_PATH = "/data-item-received"; 
private GoogleApiClient mGoogleApiClient; 

public static void LOGD(final String tag, String message) { 
    if (Log.isLoggable(tag, Log.DEBUG)) { 
     Log.d(tag, message); 
    } 
} 

@Override 
public void onCreate() { 
    super.onCreate(); 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(Wearable.API) 
      .build(); 
    mGoogleApiClient.connect(); 
} 

@Override 
public void onDataChanged(DataEventBuffer dataEvents) { 
    LOGD(TAG, "onDataChanged: " + dataEvents); 
    if (!mGoogleApiClient.isConnected() || !mGoogleApiClient.isConnecting()) { 
     ConnectionResult connectionResult = mGoogleApiClient 
       .blockingConnect(30, TimeUnit.SECONDS); 
     if (!connectionResult.isSuccess()) { 
      Log.e(TAG, "DataLayerListenerService failed to connect to GoogleApiClient, " 
        + "error code: " + connectionResult.getErrorCode()); 
      return; 
     } 
    } 

    // Loop through the events and send a message back to the node that created the data item. 
    for (DataEvent event : dataEvents) { 
     Uri uri = event.getDataItem().getUri(); 
     String path = uri.getPath(); 
     if (EXTRAS_PATH.equals(path)) { 
      // Get the node id of the node that created the data item from the host portion of 
      // the uri. 
      String nodeId = uri.getHost(); 
      // Set the data of the message to be the bytes of the Uri. 
      byte[] payload = uri.toString().getBytes(); 

      // Send the rpc 
      Wearable.MessageApi.sendMessage(mGoogleApiClient, nodeId, DATA_ITEM_RECEIVED_PATH, 
        payload); 
     } 
    } 
} 

答えて

1

は、Googleプレイサービスライブラリで提供のGoogle APIの1への接続を作成したいとき、GoogleApiClientのインスタンスを作成します。 GoogleApiClient( "Google API Client")のインスタンスを作成する必要があります。 Google APIクライアントは、すべてのGoogle Playサービスに共通のエントリポイントを提供し、ユーザーの端末と各Googleサービス間のネットワーク接続を管理します。

messageを受け取るWearableListenerServiceを定義します。データ変更、メッセージ、または接続イベントなど、他のノードからイベントを受信します。

MessageApiを通してメッセージを送信すると、メッセージは接続されたネットワークノードに配信されます。複数のウェアラブル装置をユーザのハンドヘルド装置に接続することができる。ネットワーク内の各接続デバイスはノードと見なされます。接続された複数のデバイスでは、どのノードがメッセージを受信するのかを検討する必要があります。

次に、addListener(GoogleApiClient, MessageApi.MessageListener)で使用されるMessageApi.MessageListenerを実装して、メッセージイベントを受信します。バックグラウンドでイベントの通知を受けようとする場合は、WearableListenerServiceを使用してください。その後、メッセージを受信し、LocalBroadcastManagerを使用してメッセージを精緻化し、その値をウェアに表示します。

関連するチケットは次のとおりです。Send message from wearable to phone and then immediately reply

関連する問題