2016-06-07 6 views
0

Ich arbeite derzeit an Android Wearable-Anwendung, aber ich bin ziemlich Anfänger auf tragbare Anwendung, ich habe einen kleinen Zweifel, den ich korrigieren muss.Wie verbinden Sie Android Apps mit tragbaren Apps?

So habe ich einen Bildschirm mit Knopf auf meinen mobilen Apps, wenn ich also den Knopf drücke, dann möchte ich die Hintergrundfarbe beim Tragen ändern.

Mobile App

mButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //How to send request to Wear Apps 
    } 
}); 

Wear App

final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub); 
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { 
     @Override 
     public void onLayoutInflated(WatchViewStub stub) { 
      //How to receive request from Android mobile app 
     } 
    }); 

enter image description here

Und bitte wenn der Screenshot gehen und mein Projekt überprüfen Erbe-achy und schlagen mir eine Lösung.

Antwort

2

Von mobilen Seite in dir Aktivität/Fragment, erstellen Sie eine Verbindung

GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(getContext()) 
      .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { 
       @Override 
       public void onConnected(Bundle bundle) { 
        Log.d(LOG_TAG, "API client connected"); 
       } 

       @Override 
       public void onConnectionSuspended(int i) { 
        Log.d(LOG_TAG, "API client connection suspended"); 
       } 
      }) 
      .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() { 
       @Override 
       public void onConnectionFailed(ConnectionResult connectionResult) { 
        Log.d(LOG_TAG, "API client connection failed"); 
       } 
      }) 
      .addApi(Wearable.API) 
      .build(); 
    mGoogleApiClient.connect(); 

Verwenden DataMap auf Datenelemente

PutDataMapRequest putDataMapRequest = PutDataMapRequest.create("/app"); 
    putDataMapRequest.getDataMap().putString("DATA", data); // your data 
    PutDataRequest putDataRequest = putDataMapRequest.asPutDataRequest(); 
    PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(mGoogleApiClient, putDataRequest); 
    pendingResult.setResultCallback(new ResultCallback<DataApi.DataItemResult>() { 
     @Override 
     public void onResult(DataApi.DataItemResult dataItemResult) { 
      if (dataItemResult.getStatus().isSuccess()){ 
       Log.d(LOG_TAG, "Sent weather data to watch"); 
      } 
      else{ 
       Log.d(LOG_TAG, "Unable to send data to watch"); 
      } 
      mGoogleApiClient.disconnect(); 
     } 
    }); 

Abhängigkeiten

compile 'com.google.android.support:wearable:1.1.0' 
compile 'com.google.android.gms:play-services-wearable:7.8.0' 

Von Wear Seite senden, Empfangen von Daten in Aktivität

GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(getBaseContext()) 
       .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { 
        @Override 
        public void onConnected(Bundle bundle) { 
         Log.d(LOG_TAG, "API client connected"); 
         final DataApi.DataListener dataListener = new DataApi.DataListener() { 
          @Override 
          public void onDataChanged(DataEventBuffer dataEventBuffer) { 
           Log.e(LOG_TAG, "onDataChanged(): " + dataEventBuffer); 
           for (DataEvent event: dataEventBuffer){ 
            if (event.getType() == DataEvent.TYPE_CHANGED){ 
             DataItem dataItem = event.getDataItem(); 
             if (dataItem.getUri().getPath().equals("/app")){ 
              DataMap dataMap = DataMapItem.fromDataItem(dataItem).getDataMap(); 
              String data = dataMap.getString("DATA"); // You have received the data, do your stuff 
              Log.d(LOG_TAG, "data " + data); 
             } 
            } 
           } 
          } 
         }; 
         Wearable.DataApi.addListener(mGoogleApiClient, dataListener); 
        } 

        @Override 
        public void onConnectionSuspended(int i) { 
         Log.d(LOG_TAG, "API client connection suspended"); 
        } 
       }) 
       .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() { 
        @Override 
        public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
         Log.d(LOG_TAG, "API client connection failed"); 
        } 
       }) 
       .addApi(Wearable.API) 
       .build(); 
     mGoogleApiClient.connect(); 

Abhängigkeiten

compile 'com.google.android.support:wearable:1.3.0' 
compile 'com.google.android.gms:play-services-wearable:7.8.0' 
+0

hey auf Verschleiß es immer auf die los „API-Client-Verbindung fehlgeschlagen“ – animation123

+0

Stellen Sie sicher, gleiche Version von Play-Dienste auf mobilen und tragen verwenden. Prüfe auch in logcat, wenn eine Warnung bezüglich der Play Services Version kommt oder nicht! – jitinsharma

+0

ja beide sind die gleiche Version von Google Play, aber nachdem es eine Verbindung zu Google Play gibt, kommt es nicht auf OnDataChanged. – animation123