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 アプリの画面です。

f:id:iotlab:20140723102722p:plain

こちらが Android Wear 側の画面です。Allthecooks と Lyft という謎の Android Wear 対応アプリを Android にインストールしたら自動的に Android Wear にも入っていました。

f:id:iotlab:20140723102735p:plain

使い方とか全然わかりません。。。開発するってレベルじゃねーぞ、ということでもう少しいじってみようと思います。

Android (Android L) と Android Wear (Android W) 連携できず

AndroidAndroid 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 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 の画面に何かを表示するアプリを作ってみました。

f:id:iotlab:20140704180322p:plain


ふと sdk を 20 にアップグレードしたおかげで色々と Android Wear の設定ができることに気付きました。Android Wear の画面を変更できるようですが、デフォルトの Simple 以外はマトモに動かないようです。。


f:id:iotlab:20140704180334p:plain

なにか、この辺の仕様をご存知の方いらっしゃいましたら教えて頂けると幸いです!!

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 エミュレータ上で実行できています。

参考記事: http://android.benigumo.com/20140628/android-studio-0-8-1-%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%A7%E6%B3%A3%E3%81%8D%E3%81%9D%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8B/

NHKの番組情報を Android Wear に表示するサンプルコードを動かしてみる 2/2

NHKAPI キーを新しく用意して、 サンプルコードをビルドして Android にインストールしたところうまく動作してくれました。

f:id:iotlab:20140630184750p:plain

このように、現在放送中の番組と次に放送する番組が Android Wear に表示されています。

このサンプルコードを含めた Android Stduio 用プロジェクト一式を https://github.com/yuma300/android_wear_sandbox にて管理します。

このサンプルコードを実行するまでに必要な事を以下にまとめます(項目によってはとてもざっくりです)。

adb -d forward tcp:5601 tcp:5601
※genymotionで行っている場合は、
adb devices
で端末名を取得してから
adb -s 端末名(192.168.xx.xx:5555) forward  tcp:5601 tcp:5601


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さん誠にありがとうございます!!


このサンプルコードは NHKAPI を用いて NHK で現在放送している番組情報を Android Wear で表示するもののようです。

さっそくサンプルコードをビルドして Android エミュレータで動作させてみました。(TVウォッチャーというアプリがそれです)

f:id:iotlab:20140627194349p:plain


まだNHKAPIを使うためのユーザー登録をしてないので正常に動作してませんが、とりあえずビルドして 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 を起動してみたところがこちら

f:id:iotlab:20140625191917p:plain

http://eggdev.mobaegg.com/2014/03/android-wear.html を参考に Android エミュレータと Androd Wear の接続に成功しました!!

Gmail の通知情報を Android Wear 側で表示できています

f:id:iotlab:20140625191927p:plain