2016-09-26 97 views
2

我正嘗試使用Wearable消息API在我的手機和可穿戴設備之間發送消息。手機(物理加一)和智能手錶(物理索尼smartwatch 3)將相互連接。發送消息也會作爲發送報告。但是Mobile和Wearable Application的WearableServiceListener都不會響應這些消息。Android 6.1和Smartwatch無法通信WearableListenerService

我已經檢查:

  1. 的applicationID

  2. 軟件包名稱

  3. 清單

我可以檢查還有什麼發現問題? 謝謝

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> 

和兩個模塊:

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

回答