Как подключить Android-приложения к носимым приложениям?

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

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

Мобильное приложение

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

Носить приложение

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

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

1 ответ

Решение

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

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'

Со стороны Износа, получать данные в деятельности

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'
Другие вопросы по тегам