2017-11-08 24 views
0

Android Wear開発の新機能です。私はスマートウォッチをモバイルアプリに文字列を送るようにしようとしていますが、どのように動作させるのか分かりません。私はいくつかのチュートリアルの後でそれをしようとしましたが、まだ何も動作しません。Android Wearからアンドロイドモバイルにメッセージが送信されます

Androidモバイルマニフェスト

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="manuela.com.messagewearableandroid"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 

     <meta-data android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 


     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <service 
      android:name=".ListenerService" 
      android:enabled="true"> 
      <intent-filter> 
       <action android:name="com.google.android.gms.wearable.DATA_CHANGED" /> 
       <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" /> 
       <data android:scheme="wear" android:host="*" /> 
      </intent-filter> 

     </service> 
    </application> 

</manifest> 

Androidのマニフェストを着用してください:モバイルため

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="manuela.com.messagewearableandroid"> 

    <uses-feature android:name="android.hardware.type.watch" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@android:style/Theme.DeviceDefault"> 

     <meta-data android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

ListenerService:

public class ListenerService extends WearableListenerService { 
    @Override 
    public void onMessageReceived(MessageEvent messageEvent) { 
     super.onMessageReceived(messageEvent); 
     showToast(messageEvent.getPath()); 
     System.out.println("Arrivato"); 
    } 
    private void showToast(String message) { 

     System.out.println("Arrivato"); 
     Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); 
    } 
} 
ため

MainActivityは:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    initApi(); 

    Button button = (Button) findViewById(R.id.btn_toast); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      /** 
      * Sets up the button for handling click events. 
      */ 
      sendToast(); 

     } 
    }); 
} 

/** 
* Initializes the GoogleApiClient and gets the Node ID of the connected device. 
*/ 
private void initApi() { 
    client = getGoogleApiClient(this); 
    retrieveDeviceNode(); 
} 


/** 
* Returns a GoogleApiClient that can access the Wear API. 
* @param context 
* @return A GoogleApiClient that can make calls to the Wear API 
*/ 
private GoogleApiClient getGoogleApiClient(Context context) { 
    return new GoogleApiClient.Builder(context) 
      .addApi(Wearable.API) 
      .build(); 
} 

/** 
* Connects to the GoogleApiClient and retrieves the connected device's Node ID. If there are 
* multiple connected devices, the first Node ID is returned. 
*/ 
private void retrieveDeviceNode() { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      client.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS); 
      NodeApi.GetConnectedNodesResult result = 
        Wearable.NodeApi.getConnectedNodes(client).await(); 
      List<Node> nodes = result.getNodes(); 
      if (nodes.size() > 0) { 
       nodeId = nodes.get(0).getId(); 
      } 
      client.disconnect(); 
     } 
    }).start(); 
} 

/** 
* Sends a message to the connected mobile device, telling it to show a Toast. 
*/ 
private void sendToast() { 
    if (nodeId != null) { 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       client.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS); 
       Wearable.MessageApi.sendMessage(client, nodeId, MESSAGE, null); 
       System.out.println("Mandato"); 
       client.disconnect(); 
      } 
     }).start(); 
    } 
} 
+1

どのようなエラーが表示されますか? – javaPlease42

+0

実際には何も起こりません、摩耗とモバイルシミュレータの両方が始まります、私は磨耗側のボタンを押しますが、トーストはモバイル側に表示されません。 – manuela89

答えて

0

あなたはメッセージの送受信このdocumentationに従うことができます。一意ここで、メッセージのアクション

を識別するSending String from watch to phoneするための別の基準です

  • 任意ペイロード(オプション)
  • パス:あなたがメッセージはMessageApiを使用してメッセージに以下の項目を添付し送信します。

関連する問題