2016-06-07 5 views
0

В настоящее время я работаю над Android Wearable, но я довольно новичок для ношения приложения, у меня есть одно небольшое сомнение, которое мне нужно исправить.Как подключить приложения для Android к загружаемым приложениям?

Итак, у меня есть один экран с кнопкой на мобильных приложениях, поэтому, если я нажму кнопку, то я хочу, чтобы цвет фона менялся при изнашивании.

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

И пожалуйста, перейдите хотя скриншот и проверить мой проект наследник нездоровым и предложить мне какое-то решение.

ответ

2

С мобильной стороны внутри вас активностью/фрагмент, создать соединение

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(); 

Использование DataMap для отправки элементов данных

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(); 
     } 
    }); 

зависимостей

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

Со стороны Wear, получать данные по активности

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(); 

Зависимости

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

эй на износ это всегда происходит в «связи клиента API не удалось» – animation123

+0

Убедитесь, что вы используете ту же версию игры услуг на мобильном телефоне и носить. Также проверьте logcat, если произойдет какое-либо предупреждение относительно версии игровых сервисов или нет! – jitinsharma

+0

Да, обе версии одинаковой версии игры Google, но после того, как она подключилась к игре Google, она не входит в onDataChanged. – animation123