Как подключить 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'