Google Cast SDKを使ったAndroid/iOSアプリの作り方と注意点:Chromecastアプリ開発入門(終)(4/6 ページ)
メディアストリーミングデバイス「Chromecast」用アプリの開発方法を一から解説する連載。今回は、テレビ側のReceiverアプリにつなげるスマホのSenderアプリの概要と作り方、注意点、Cast Companion Libraryの使い方などを解説します。
Cast Companion Library(CCL)の利用
CCLとは
これまで見てきたように、Chromecastとの接続・通信にはいくつものライブラリのAPIを使用しなければならず、やや面倒です。そこで、なるべくアプリ開発の負担を軽くするために、これらライブラリのAPIをラップしたCast Companion Library(以下、CCL)が公開されています。
CCLは他のChromecastサンプルプログラムと一緒にGitHub上で公開されています。Android用サンプルプログラムの一つであるCastVideos-androidは、CCLの利用を前提としています。
CCLを使うと、どの程度アプリ側の実装が簡単になるかを確認するため、実装例を以下に記します(コード18)。「// for Cast」のコメントがある個所がChromecast関連の処理です。これだけの実装で、CastアイコンやCastメニューの表示、選択したChromecastデバイスとの接続とReceiverアプリの起動までできます。ここまでに紹介してきたCCLを使用しない実装と比較してみてください。
public class CCLSampleMainActivity extends ActionBarActivity { private static VideoCastManager sCastMgr; // for Cast private static String APPLICATION_ID = "APPLICATION_ID"; // for Cast @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cclsample_main); initializeCastManager(); // for Cast } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.cclsample_main, menu); sCastMgr.addMediaRouterButton(menu, R.id.media_route_menu_item); // for Cast return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override protected void onResume() { super.onResume(); sCastMgr.incrementUiCounter(); // for Cast } @Override protected void onPause() { super.onPause(); sCastMgr.decrementUiCounter(); // for Cast } // for Cast // CCLのVideoCastManager初期化 private void initializeCastManager() { sCastMgr = VideoCastManager.initialize(getApplicationContext(), APPLICATION_ID, null, null); sCastMgr.enableFeatures(VideoCastManager.FEATURE_NOTIFICATION | VideoCastManager.FEATURE_LOCKSCREEN | VideoCastManager.FEATURE_WIFI_RECONNECT | VideoCastManager.FEATURE_CAPTIONS_PREFERENCE | VideoCastManager.FEATURE_DEBUGGING); } }
CCLが提供する機能
CCLが提供する主な機能とUIを列挙します。
- Chromecastデバイスの検出
- カスタマイズされたCastメニュー
- カスタマイズされたコントロール画面
- カスタマイズされたNotification
- ロックスクリーンでのコンロトーラー
- Receiverアプリとのセッションリカバリ
CCLのメリット
CCLのメリットの一つは、先に述べたように、依存ライブラリのAPIを使った面倒な手続きを省略できる点です。
もう一つのメリットとして、上で列挙した機能とUIがGoogle Cast Design Checklistに準拠してる点が挙げられます。例えば動画再生アプリの場合は、グーグルが定めた基準仕様により、Notificationやロックスクリーンなどの画面に再生・一時停止ボタンなどの基本的操作ができるUIを配置する必要がありますが、CCLが提供するUIはこうした基準を満たしています。
CCLの詳しい利用方法の説明はここでは割愛しますが、CCLに同梱されている 「CastCompanionLibrary.pdf」に記載されているので参考にしてください。
CCLの注意点
非常に強力なCCLですが、いくつか注意点もあります。
【1】Googleの公式ライブラリではない
依存ライブラリのAndroid Support LibrariesやGoogle Play Services SDKなどとは異なります。CCLはソースコードを含めたプロジェクト一式として提供されています。パッケージ名が「com.google.sample.castcompanionlibrary」であることからも分かるように、あくまでサンプルの一つという位置付けなので、その点をわきまえて利用しましょう。パッケージ名も作成するアプリに合わせて変更します。
【2】場合によってはCCLのコードにアプリ開発者が手を加える必要がある
コントロール画面やNotificationなどのデザインはCCL内部で定義されています。ユーザーのアプリに合わせてデザインを変更したい場合は、CCLの実装を変更します。また、Notification用に使うNotification IDがVideoCastNotificationServiceクラス内で固定で1に設定されているため、開発するアプリがすでに同じIDを使っている場合には、重複しない値にしなければなりません。
以上のことから、CCLは「Library」という名前が付いているものの、ブラックボックス化された一般的なライブラリとは毛色が異なります。CCLを使えば多くの面倒な実装を省けますが、ベースとなるGoogle Cast SDKなどのライブラリの知識が全く不要になるわけではなく、カスタマイズしたい場合には、それらの知識を使いながらCCLのコードを読み進め、改修する作業が必要です。
以上でAndroidの実装の解説を終わります。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Windows OS/Androidの画面をChromecast経由でテレビに表示する
会議室のテレビにWindows OSの画面を映してプレゼンテーションしたい。でもケーブルをつなぐのはスマートではない。こんなとき、テレビにChromecastを接続し、Windows OSにGoogle Chromeをインストールすれば、画面をWi-Fi経由でテレビに表示できるようになる。 - 米グーグルがChromecastのSDKを公開
モバイル端末とTVの垣根を超えるChromecast用のSDKをGoogleが公開。Chromeの拡張機能とiOS向けのGoogle Cast SDKは即日提供を開始、Android版も数日中にリリース予定だという。 - グーグルのプレスイベントで見るグーグル新時代の幕開け
新型Nexus 7タブレットやAndroid 4.3、さらには新デバイスChromecastの発表から、グーグルの新世代戦略を読み解きます。 - YouTube動画を家中のディスプレイで再生できたら
YouTubeビデオを、ブラウザからリビングのテレビやタブレットに飛ばせたら。HTML5のPlayコマンドをテレビに送信して再生する方法を紹介します - Android L、Android Wear、Android TV、Android Autoの開発者向け現状まとめ
米グーグルが「Google I/O 2014」で発表した次期Android「Android L」「Android TV」「Android Auto」の開発者プレビュー、そして「Android Wear」の正式版。これらに対応したアプリを開発するには、どこを見ればいいのか。概要とともに簡単にまとめてみた。 - 第17回 iPhoneの画面をApple TVでテレビに表示する
iPhoneの画面をテレビに映してプレゼンしたい。こんなとき、会議室にApple TVを用意しておくと便利。たった3ステップでiPhoneの画面をテレビに映せるようになる。 - Windows OSの画面をApple TV経由でテレビに表示する
会議室のテレビにWindows OSの画面を映してプレゼンテーションしたい。でもケーブルをつなげるのは少々スマートではない。こんなとき、テレビにApple TVを接続し、Windows OSに「AirParrot」をインストールすれば、画面をWi-Fi経由でテレビに表示できるようになる。 - WebSocketでスマートテレビをリアル接続するぷらら
ひかりTV独自のスマートテレビリモコンの接続方法はWebSocketを用いた常時接続だ。その仕組みと開発意図を聞いた。 - さまざまなデバイスがWebと結び付いていく
テレビやカーナビ、家電とWebが連携していく「Web of Things」。NHKなど、最前線の取り組みが語られたカンファレンスをレポートする - テレビのスマート化とYouTubeのテレビ化
YouTubeなどネットの攻勢に対し、何もしないと「テレビは死ぬ」。それは明らかだ。テレビ局がよいサービスを開発できるかどうかが要となる。 - スマートテレビはチャンスだぞ
テレビもスマート、なんだと。アメリカからGoogle TVやApple TVがやってくる。米テレビ局の映像配信Huluも上陸している。もちろん、日本だって手を打っている - 今度こそテレビとWebの統合なるか:「Google TV」は従来のWebテレビと何が違うのか?
- 頭脳放談第120回:Google TVがVIA Technologiesも救う?
- WebとUIをつなぐトリックスター(2):テレビでYahoo!デバイスが変わればUIデザインも変わる
制作の要となるエンジニアとデザイナのチームワークのツボを探る連載。今回はヤフーのテレビ向けサービスのデザイン担当に話を聞いた