这是我移动端代码的MainActivity:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.wearable.DataClient;
import com.google.android.gms.wearable.DataItem;
import com.google.android.gms.wearable.PutDataMapRequest;
import com.google.android.gms.wearable.PutDataRequest;
import com.google.android.gms.wearable.Wearable;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
Button button;
private static final String COUNT_KEY = "com.example.torbengab.sendwatchmessage";
DataClient mDataClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendStuff();
}
});
}
private void sendStuff() {
mDataClient = Wearable.getDataClient(this);
PutDataMapRequest putDataMapReq = PutDataMapRequest.create("/message").setUrgent();
putDataMapReq.getDataMap().putInt(COUNT_KEY, 123);
PutDataRequest putDataReq = putDataMapReq.asPutDataRequest().setUrgent();
Task<DataItem> putDataTask = mDataClient.putDataItem(putDataReq);
putDataTask.addOnSuccessListener(new OnSuccessListener<DataItem>() {
@Override
public void onSuccess(DataItem dataItem) {
Toast.makeText(getApplicationContext(), "sending :)", Toast.LENGTH_LONG).show();
}
});
}
}
我正在获得putDataTask.addOnSuccessListener的onSuccess回调函数。因此,我认为这部分工作正常。 这是Wear项目MainActivity的代码:
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.wearable.activity.WearableActivity;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.wearable.CapabilityClient;
import com.google.android.gms.wearable.CapabilityInfo;
import com.google.android.gms.wearable.DataClient;
import com.google.android.gms.wearable.DataEvent;
import com.google.android.gms.wearable.DataEventBuffer;
import com.google.android.gms.wearable.DataItem;
import com.google.android.gms.wearable.DataMap;
import com.google.android.gms.wearable.DataMapItem;
import com.google.android.gms.wearable.MessageClient;
import com.google.android.gms.wearable.MessageEvent;
import com.google.android.gms.wearable.Wearable;
public class MainActivity extends WearableActivity implements DataClient.OnDataChangedListener,
MessageClient.OnMessageReceivedListener,
CapabilityClient.OnCapabilityChangedListener {
private TextView mTextView;
private static final String COUNT_KEY = "com.example.torbengab.sendwatchmessage";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.text);
// Enables Always-on
setAmbientEnabled();
}
@Override
protected void onResume() {
super.onResume();
// Instantiates clients without member variables, as clients are inexpensive to create and
// won't lose their listeners. (They are cached and shared between GoogleApi instances.)
Wearable.getDataClient(this).addListener(this);
Wearable.getMessageClient(this).addListener(this);
Wearable.getCapabilityClient(this)
.addListener(
this, Uri.parse("wear://"), CapabilityClient.FILTER_REACHABLE);
}
@Override
protected void onPause() {
super.onPause();
Wearable.getDataClient(this).removeListener(this);
Wearable.getMessageClient(this).removeListener(this);
Wearable.getCapabilityClient(this).removeListener(this);
}
@Override
public void onDataChanged(@NonNull DataEventBuffer dataEventBuffer) {
Toast.makeText(getApplicationContext(), "yey", Toast.LENGTH_LONG).show();
for (DataEvent event : dataEventBuffer) {
if (event.getType() == DataEvent.TYPE_CHANGED) {
// DataItem changed
DataItem item = event.getDataItem();
if (item.getUri().getPath().compareTo("/message") == 0) {
DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap();
Toast.makeText(getApplicationContext(), String.valueOf(dataMap.getInt(COUNT_KEY)), Toast.LENGTH_LONG).show();
}
} else if (event.getType() == DataEvent.TYPE_DELETED) {
// DataItem deleted
}
}
}
@Override
public void onCapabilityChanged(@NonNull CapabilityInfo capabilityInfo) {
Toast.makeText(getApplicationContext(), "yey", Toast.LENGTH_LONG).show();
}
@Override
public void onMessageReceived(@NonNull MessageEvent messageEvent) {
Toast.makeText(getApplicationContext(), "yey", Toast.LENGTH_LONG).show();
}
}
也许我需要在清单文件中添加权限,但我在网上找不到相关信息。如果你们中的任何一个人能帮助我,那就太棒了。谢谢。