2016-09-26 5 views
2

Ich versuche, Nachrichten zwischen meinem Handy und Wearable mit der Wearable Message API zu senden. Sowohl das Telefon (physisch Eins plus eins) als auch die Smartwatch (Physische Sony Smartwatch 3) werden miteinander verbunden. Das Senden einer Nachricht wird auch als gesendet gemeldet. Aber weder der Mobile WearableServiceListener noch der Wearable Application werden auf diese Nachrichten reagieren.Android 6.1 und Smartwatch kommunizieren nicht WearableListenerService

Ich habe überprüft:

  1. ApplicationId
  2. Paketnamen

  3. Manifest

Was kann ich sonst noch das Problem finden überprüfen? Danke

public class MainActivityPhone extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 

private Node connectedPhone; 
private static String WEAR_PATH = "/from_phone"; 
private final String TAG = MainActivityPhone.class.getSimpleName(); 
GoogleApiClient googleApiClient; 

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

    googleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(Wearable.API) 
      .build(); 
    googleApiClient.connect(); 

} 

public void phoneButtonHandler(View view){ 
    sendMessage(); 
} 

@Override 
public void onConnectionSuspended(int i) { 

    Log.e(TAG,"connection suspended"); 
} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 
    Log.e(TAG,"connection failed"); 
} 
@Override 
public void onConnected(Bundle bundle) { 

    Wearable.NodeApi.getConnectedNodes(googleApiClient) 
      .setResultCallback(new ResultCallbacks<NodeApi.GetConnectedNodesResult>() { 
       @Override 
       public void onSuccess(@NonNull NodeApi.GetConnectedNodesResult nodes) { 
        for (Node node : nodes.getNodes()) { 
         if (node != null && node.isNearby()) { 
          connectedPhone = node; 
          Log.i(TAG, "Connected to " + connectedPhone.getDisplayName()); 
         } 
        } 
       } 

       @Override 
       public void onFailure(@NonNull Status status) { 
        if (connectedPhone == null) { 
         Log.i(TAG, "not connected!"); 
        } 
       } 
      }); 
} 

@Override 
protected void onStart() { 
    super.onStart(); 
    googleApiClient.connect(); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    googleApiClient.disconnect(); 
} 

private void sendMessage(){ 

    if(connectedPhone != null && googleApiClient != null) { 

     Wearable.MessageApi.sendMessage(googleApiClient, connectedPhone.getId(), WEAR_PATH, "alarm".getBytes()).setResultCallback(new ResultCallbacks<MessageApi.SendMessageResult>() { 
      @Override 
      public void onSuccess(@NonNull MessageApi.SendMessageResult sendMessageResult) { 

       Log.e(TAG, "message sent"); 
      } 

      @Override 
      public void onFailure(@NonNull Status status) { 

       Log.e(TAG, "connection failed!" + status.getStatusMessage()); 
      } 
     }); 
    } 
    else{ 
     Toast.makeText(this,"failed to send, no connection",Toast.LENGTH_SHORT).show(); 
    } 
} 

.

<service android:name=".ListenerFromWear"> 
     <intent-filter> 
      <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" /> 
     </intent-filter> 
    </service> 

und für beide Module:

android { 
compileSdkVersion 24 
buildToolsVersion "24.0.2" 
defaultConfig { 
    applicationId "com.leon_wolf.bigpresenter.connectphoneandwatch" 
    minSdkVersion 23 
    targetSdkVersion 24 
    versionCode 1 
    versionName "1.0" 

Antwort

2

Ihre Service-Definition ändern sein:

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

Sie müssen die wear Schema angeben, wie hier beschrieben:

https://developers.google.com/android/reference/com/google/android/gms/wearable/WearableListenerService

Stellen Sie außerdem sicher, dass sich Ihr Service erweitert WearableListenerService

Verwandte Themen