WaerとWearって紛らわしいですよね。
http://www.appbank.net/2013/10/31/iphone-application/693334.php
今回はAndroid Wearから携帯電話へメッセージを送るチュートリアルです。
同期的・非同期的やサービスなど、一重にメッセージを送るだけでもいくつか手段がありますが今回は
Android Wearからスマホへ、非同期にメッセージを送る
という事だけ達成出来ればと思います。
1 既存プロジェクトにAndroid Wearのモジュールを追加する
File>New Module...
からモジュールを追加します。
今回はWatch InterFaceなのでAndroid Wear Moduleを選択します。
Packgae name:は必ずスマホ用のアプリと同じにしてください。(同じにしないとメッセージの送信が届きません。これで1日無駄にしました。)
この後は気にすることはありません。finishまでnextを押し続けます。
2 時計側からの送信部分を書く
概要は、ボタンを押したら送信されるという感じです。
以下は時計側のコードです。
@Override
public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
initApi();
Button button = new Button(this.getActivity());
button.setText("OK");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendToast(getActivity());
}
});
return button;
}
private void sendToast(final Context context) {
new Thread(new Runnable() {
@Override
public void run() {
GoogleApiClient client = new GoogleApiClient.Builder(context)
.addApi(Wearable.API)
.build();
client.blockingConnect(100, TimeUnit.MILLISECONDS);
NodeApi.GetConnectedNodesResult result =
Wearable.NodeApi.getConnectedNodes(client).await();
List<Node> nodes = result.getNodes();
if (nodes.size() > 0) {
client.blockingConnect(100, TimeUnit.MILLISECONDS);
Wearable.MessageApi.sendMessage(client, nodes.get(0).getId(), "hello", null);
client.disconnect();
}
client.disconnect();
}
}).start();
}
3 受信側のサービスを作る
受信側のサービスを作ります。
概要は、メッセージを受け取ったらトーストを表示する。です
スマホアプリの方にWatchServiceというjavaファイルを作り以下のように実装します。
public class WatchService extends WearableListenerService {
@Override
public void onMessageReceived(MessageEvent messageEvent) {
showToast(messageEvent.getPath());
}
private void showToast(String message) {
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
}
4 AndroidManifest.xmlの修正
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
上記の記述をスマホ・時計の両方のAndroidManifest.xmlのApplication下に書きます。
<service
android:name=".WatchService" >
<intent-filter>
<action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
</intent-filter>
</service>
上記をスマホ側のAndroidManifest.xmlのApplication下に書くことでWatchServiceを受け取る準備をさせます。
5 実行
スマホ側・時計側のアプリをそれぞれインストールさせて、時計側のボタンを押してスマホにトーストが表示されれば成功です!