API20 の Android Wear エミュレータと Android エミュレータの連携に成功
ついについに!! Android Wear API20 と Android を連携させることができました。どうやら Android Wear app のバージョンが古かったようです。
http://www.apkreleases.com/2014/07/14/android-wear-1001261840-apk-android-direct-download-link/
ここから新しい Android Wear アプリの apk をダウンロードして Android にインストールしたら今までと同様の手順で連携できました。
こちらが新しいバージョンの Android Wear アプリの画面です。
こちらが Android Wear 側の画面です。Allthecooks と Lyft という謎の Android Wear 対応アプリを Android にインストールしたら自動的に Android Wear にも入っていました。
使い方とか全然わかりません。。。開発するってレベルじゃねーぞ、ということでもう少しいじってみようと思います。
Android (Android L) と Android Wear (Android W) 連携できず
Android も Android Wear も API20 で揃えれば連携できるんじゃないかと思いやってみたのですが、ダメでした。
以下のコマンドを実行しているのですが、エラーが出てダメでした。
$ ./adb devices
List of devices attached
emulator-5554 device
emulator-5556 device
usr0600273@PMAC058S:/Applications/Android Studio.app/sdk/platform-tools$ ./adb -d forward tcp:5601 tcp:5601
error: device not found
error: device not found
Android Wear アプリをソースコードからビルドして動かしてみる
Android SDK のバージョンを 20 にしました (Android 4.4W)
これに伴って AVD からデバイスの SDK のバージョンも 19 から 20 を使うようにしました(これを行わないと Failure [INSTALL_FAILED_OLDER_SDK] というエラーが出ます)
ソースコードからビルドして Android Wear アプリにインストールして起動できるようになったので、とりあえず http://developer.android.com/training/wearables/apps/creating.html を参考に Android Wear の画面に何かを表示するアプリを作ってみました。
ふと sdk を 20 にアップグレードしたおかげで色々と Android Wear の設定ができることに気付きました。Android Wear の画面を変更できるようですが、デフォルトの Simple 以外はマトモに動かないようです。。
なにか、この辺の仕様をご存知の方いらっしゃいましたら教えて頂けると幸いです!!
Android Studio 0.8.1 へバージョンアップ
http://qiita.com/tnj/items/83c41872125f01588068 この記事を参考に Android Wear のスタンドアローンアプリを作るための環境を整えようと思います。
Android Studioのバージョンを 0.4.3 から 0.8.1 へバージョンアップ(記事によると0.8.0以上であればOKです)、それに伴い Android SDK のバージョンも 19.1.0 にバージョンアップ。
以下にハマったときの解消内容を書きます。エラー内容も残しておけばよかった。。。。orz
build.gradle について
プロジェクトディレクトリ直下と app ディレクトリ直下にそれぞれ build.gradle がありますが、 app ディレクトリ直下の build.gradle のみに以下の内容を記述します。
android { compileSdkVersion 19 buildToolsVersion '19.1.0' }
com.android.support:appcompat について
app ディレクトリ直下の build.gradle にいかのような記述を入れます。
dependencies { compile 'com.android.support:appcompat-v7:19.1.0' }
現在正常に Android Studio 0.8.1 で Android アプリをソースからビルドして Genymotion のAndroid エミュレータ上で実行できています。
NHKの番組情報を Android Wear に表示するサンプルコードを動かしてみる 2/2
NHK の API キーを新しく用意して、 サンプルコードをビルドして Android にインストールしたところうまく動作してくれました。
このように、現在放送中の番組と次に放送する番組が Android Wear に表示されています。
このサンプルコードを含めた Android Stduio 用プロジェクト一式を https://github.com/yuma300/android_wear_sandbox にて管理します。
このサンプルコードを実行するまでに必要な事を以下にまとめます(項目によってはとてもざっくりです)。
- AndroidStudio 入れる
- Android Wear エミュレータを AndroidStudio に入れる
- Genymotion 入れる
- Genymotion に Android 4.4.2 の Android エミュレータを入れる
- AndroidStudio と Genymotion の Android エミュレータの連携プラグインを入れる
- Android エミュレータ と Android Wear エミュレータを起動しておく
- Android エミュレータ に AndroidWear app をインストールする
- 以下のコマンドを実行し、Android エミュレータとAndroidWearエミュレータが通信できるようにする
adb -d forward tcp:5601 tcp:5601 ※genymotionで行っている場合は、 adb devices で端末名を取得してから adb -s 端末名(192.168.xx.xx:5555) forward tcp:5601 tcp:5601
- AndroidWear app を起動し、Android エミュレータと Android Wear エミュレータが連携できていることを確認する
- サンプルコードを Android エミュレータにインストールして実行する
MainActivity クラス内の以下の onResponse メソッドの中にて実際に Android エミュレータから Android wear へ通知するデータを
送る処理があるようです。
/** * {@inheritDoc} */ @Override public void onResponse(final OnAirResult response) { // キャンセル NotificationManagerCompat.from(this).cancel(0); // 現在時刻の取得 final Calendar calendar = Calendar.getInstance(); final String currentTime = (getString(R.string.time_format, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE))); // タイトル final String[] titles = new String[] { "", getString(R.string.tv_program_title_current, currentTime), getString(R.string.tv_program_title_next) }; // 番組内容 final String[] tvPrograms = new String[] { "", response.nowonair_list.e1.present.title, response.nowonair_list.e1.following.title }; // グループ化(GROUP_ORDER_SUMMARYがないと通知されない) final int[] groupOrders = new int[] { WearableNotifications.GROUP_ORDER_SUMMARY, 1, 2 }; final int length = groupOrders.length; NotificationCompat.Builder builder; WearableNotifications.Builder wearableBuilder; // スタックする数だけ通知を行う for (int i = 0; i < length; i++) { // 番組表の通知作成 builder = new NotificationCompat.Builder(this); builder.setContentTitle(titles[i]); builder.setContentText(tvPrograms[i]); // ウェアラブル用通知の作成 wearableBuilder = new WearableNotifications.Builder(builder); wearableBuilder.setMinPriority(); wearableBuilder.setGroup(KEY_PROGRAM_GROUP_NHK, groupOrders[i]); wearableBuilder.setHintHideIcon(true); NotificationManagerCompat.from(this).notify(i, wearableBuilder.build()); } }
NHKの番組情報を Android Wear に表示するサンプルコードを動かしてみる 1/2
Androidエミュレータと Android Wear の連携が出来たけど、実際にプログラム的にどのように連携させればよいのかさっぱり不明なので、 http://eggdev.mobaegg.com/2014/03/android-wearnhkapi.html ここで配布されているサンプルコードをビルドして動かしてみて、サンプルコードをベースにカスタマイズしていこうと思います。チームEGGさん誠にありがとうございます!!
このサンプルコードは NHK の API を用いて NHK で現在放送している番組情報を Android Wear で表示するもののようです。
さっそくサンプルコードをビルドして Android エミュレータで動作させてみました。(TVウォッチャーというアプリがそれです)
まだNHKのAPIを使うためのユーザー登録をしてないので正常に動作してませんが、とりあえずビルドして Android エミュレータにインストールするとこまでは正常にできたようです。次回は実際に NHK の番組リストを Android Wear で表示させます。
Android エミュレータと Android Wear の連携に成功!!
どうがんばっても play store から Android Wear app をインストールできなかったので、
http://forum.xda-developers.com/android-wear/development/android-wear-developer-preview-t2685824
から apk をダウンロードしてきてインストールをした。Android エミュレータ上で Android Wear app を起動してみたところがこちら
http://eggdev.mobaegg.com/2014/03/android-wear.html を参考に Android エミュレータと Androd Wear の接続に成功しました!!
Gmail の通知情報を Android Wear 側で表示できています