まずは、Chromecastの紹介と開発について次のサイトを読んでみましょう
-
[Google Japan Blog: Chromecast で好きなオンライン動画や映画をキャストしよう] (http://googlejapan.blogspot.jp/2014/05/chromecast.html)
-
[Chromecast 向けアプリの開発について - Google Developer Relations Japan Blog] (http://googledevjp.blogspot.jp/2014/05/chromecast.html)
-
[Casting Your Content to the Big Screen - Google Cast — Google Developers] (https://developers.google.com/cast/)
AndroidのSender開発について気をつける点
依存するライブラリ
- Android Support Libraries rev 19.0.1 以上
- android-support-v4
- android-support-v7-appcompat
- android-support-v7-mediarouter
- Google Play services SDK rev 4.3 以上
- google-play-services_lib
このように多くのライブラリが必要となります。
既存アプリケーションで使用しているバージョンとの競合に気をつけて下さい。ActionBarSherlockを使用している場合、ActionBarCompatへ移行を検討する必要があります。
Google Play Serives に依存しますので、RAM容量が少ない2.3系の古いデバイスでは注意が必要です。
ユーザーによっては、このGoogle Play Serivesをアンインストールや無効にしている停止しているかもしれません。この場合Chromecastの機能は一切使えません。
アプリケーションの構成
古いアプリケーションの場合、ActionBarやFragmenntを導入していないものもあると思います。
公式ページにその場合にどのサンプルコードを参考すれば良いかチャートがありますので、これを参照して下さい。
Sender App Development - Google Cast — Google Developers
今後のUI/UX改善対応や開発効率を考慮すると ActionBarとFragmnetの導入は強くお勧めします。
Cast Companion Library (CCL) の活用
GitHubには、アプリケーションのCast対応を簡単にするライブラリとそのサンプルが公開されています。
CCLは次のような機能がサポートされています。
- Chromecastデバイスのディスカバリー
- カスタマイズされたNotification
- カスタマイズされたChromecastデバイスのコントロールダイアログ (Media Router)
- カスタマイズされたキャスティングコントロールプレーヤー (Activity)
- カスタマイズされたミニコントローラー
- ロックスクリーンコントローラー (RemoteControlClient)
- セッションリカバリー機能
- SenderとRecieverのカスタムデータチャネル
- Google Play services のインストールチェッカー
これらの機能は、サンプルアプリケーションをビルドして動かしてみるとどのようなものかわかるとおもいます。Google Cast Design Checklistに従ったUIを実装しており、アプリケーションは非常に簡単にCastへの対応が出来るようになっています。
ただし、幾つか注意があります。
-
公式ライブラリーではない!
-
パッケージ名は com.google.sample.castcompanionlibrary となってます。そのまま使用してはいけません。パッケージ名は必ず変更しなければなりません。
-
カスタムNotification (VideoCastNotificationService) で使用している Notification Id が 1 になっているため、既存アプリで IDが競合しないように変更する必要があります。
-
カスタマイズされたキャスティングコントロールプレーヤー(Activity)を内包してまますが、そのまま使用せず、ユーザーのアプリのデザインに合わせて実装し、CCLからこのActivityを使用するように変更する必要があります。
-
内包されているカスタマイズされたNotificationも使用する仕組みとなっているので、ユーザーのアプリに合わせてCCLを変更する必要があります。カスタマイズされたミニコントローラー/カスタマイズされたChromecastデバイスのコントロールダイアログも同じです。
-
内包されているカスタマイズコンポーネントをそのまま使用出来るUIである方が開発は楽ではありますね…
-
Mavenリポジトリに登録されてないので、自分でローカルリポジトリに登録する必要があります。
ロックスクリーンコントローラーの問題
Google Cast Design Checklist の Cast menu, while castin に載っているロックスクリーンは、Nexus5 KitKat 4.4.2 のものです。
他のデバイスでは実現出来ません。デバイスによっては ユーザが配置している LockScreen AppWidget と競合して表示されないこともあります。
Android RemoteControlClient API はの実装は各マニファクチャーに依存している点に注意が必要です。
Nexus5でも、fastforward/next/previous/rewind のメディアボタンが表示できなかったりします…