MessageAPIを使用して電話からMy Wearに文字列を送信しようとしています。しかし、そのメッセージは約75%の時間でウェアに届きません。これは問題です。その行動は、少なくとも私にとっては予測できないものです。メッセージが届くかどうかを決定する要因は不明です。私は以前の答えを読んで、メッセージを送信する前に時計と電話が接続されているかどうかをチェックしようとしましたが、これはどちらもうまくいきませんでした。どちらも明確に接続されていますが、依然としてメッセージが届きません。以下は、私の携帯電話アプリからコードされる:以下Android Wearに送信されたメッセージが失われる
private static void sendMessage(final String path, final String duration, final String type, final String name, final String startingTime,final Context context) {
new Thread(new Runnable() {
@Override
public void run() {
Bundle inBundle = new Bundle();
inBundle.putString("duration", duration);
inBundle.putString("type", type); // will be failed
inBundle.putString("name", name); // will be failed
inBundle.putString("Starting Time", startingTime);
inBundle.putBoolean("Stop", false);
// From Bundle to bytes
byte[] inBytes = bundleToBytes(inBundle);
NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
for(Node node : nodes.getNodes()) {
MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(
mGoogleApiClient, node.getId(), path, inBytes).await();
Log.i("Node:",nodes.getNodes().toString());
}
Wearable.NodeApi.addListener(mGoogleApiClient, new NodeApi.NodeListener() {
@Override
public void onPeerConnected(Node node) {
Log.i("Node:","Ab connected");
}
@Override
public void onPeerDisconnected(Node node) {
}
});
}
}).start();
}
はメッセージ受信のための私のAndroid Wearのコードです:
public void onMessageReceived(MessageEvent messageEvent) {
if(messageEvent.getPath().equalsIgnoreCase(START_ACTIVITY)) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Bundle outBundle = jsonStringToBundle(new String(messageEvent.getData()));
String duration = outBundle.getString("duration");
stop=outBundle.getBoolean("Stop");
String type = outBundle.getString("type");
String name = outBundle.getString("name");
String startingTime= outBundle.getString("Starting Time");
Bundle b= new Bundle();
b.putInt("duration", Integer.parseInt(duration));
b.putString("Starting Time",startingTime);
Toast.makeText(getApplicationContext(),duration + " : " + startingTime,Toast.LENGTH_SHORT).show();
if(!stop) {
AcquisitionStatus=true;
Intent sensorServ = new Intent(MyService.this, SensorService.class);
sensorServ.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY);
sensorServ.putExtras(b);
startService(sensorServ);
}
else {
AcquisitionStatus = false;
// setAcquisitionStatus(false);
}
}
else if ( messageEvent.getPath().equalsIgnoreCase("TestPath"))
{
Toast.makeText(getApplicationContext(),"HELLO!",Toast.LENGTH_SHORT).show();
}
else {
super.onMessageReceived(messageEvent);
}
}