これまで見てきたように、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が提供する主な機能とUIを列挙します。
CCLのメリットの一つは、先に述べたように、依存ライブラリのAPIを使った面倒な手続きを省略できる点です。
もう一つのメリットとして、上で列挙した機能とUIがGoogle Cast Design Checklistに準拠してる点が挙げられます。例えば動画再生アプリの場合は、グーグルが定めた基準仕様により、Notificationやロックスクリーンなどの画面に再生・一時停止ボタンなどの基本的操作ができるUIを配置する必要がありますが、CCLが提供するUIはこうした基準を満たしています。
CCLの詳しい利用方法の説明はここでは割愛しますが、CCLに同梱されている 「CastCompanionLibrary.pdf」に記載されているので参考にしてください。
非常に強力な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の実装の解説を終わります。
Windows OS/Androidの画面をChromecast経由でテレビに表示する
米グーグルがChromecastのSDKを公開
グーグルのプレスイベントで見るグーグル新時代の幕開け
YouTube動画を家中のディスプレイで再生できたら
Android L、Android Wear、Android TV、Android Autoの開発者向け現状まとめ
第17回 iPhoneの画面をApple TVでテレビに表示する
Windows OSの画面をApple TV経由でテレビに表示する
WebSocketでスマートテレビをリアル接続するぷらら
さまざまなデバイスがWebと結び付いていく
テレビのスマート化とYouTubeのテレビ化
スマートテレビはチャンスだぞCopyright © ITmedia, Inc. All Rights Reserved.