4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Google CastでAndroid TVアプリをリモート起動する

Posted at

はじめに

Google Cast の典型的な利用方法は「スマホで見ていたYouTube動画をテレビで再生させる」といったものだ。NetFlixやYouTubeが開発したDIALと呼ばれるプロトコルで実現されていた機能である。ChromecastやAndroid TV(Google TV)ではGoogle Castという技術で同じような機能と実現している

Castのフレームワークを利用すると「電源オフ(スタンバイ)状態のAndroid TVのアプリをリモート起動する」ことを簡単に実現できそうなので試してみる

結論

Google Castを利用して電源オフ(スタンバイ)状態のAndroid TVのウェブブラウザをリモート起動した
Castを受け取ったサンプルアプリからstartActivity()でウェブブラウザを起動することで実現している

今後調査が必要なこと

  • Castのセッションを継続したままSenderアプリからReceiverアプリへのメッセージの受け渡し可能か?
  • Senderアプリ内で自動でキャスト先を選択することが可能か?

Webアプリ用SDKではキャスト選択を手動で行う必要がある

Sender側でキャスト先を選択するコードがWeb Sender用のSDKではブラックボックスになっており、キャストアイコンから手動でキャスト先を選択する必要がある。プログラムで自動でキャスト先を決めて実行するためにはブラックボックスの中を調査する必要がありそうだ。

iOS用SDKではキャスト選択部分のAPIが存在する

iOSの場合にはキャスト先選択UIの作成がアプリ開発者に委ねられている。同じようにWebアプリでもプログラムで処理することは可能だろう。

検証

検証に利用した環境

役割 デバイス アプリ  補足
Cast Sender M1 MacBook Pro CastVideos-chrome Chromeで動作する Web Receiver アプリ 
Cast Receiver ADT-3(Android TV) CastAndroidTvReceiver Android TV Receiver アプリ 

デバイスの登録

Castアプリ開発を始めるために登録料$5が必要になる

  • 開発デバイスの登録
    • Google Playに公開していないアプリを実行可能にする
  • アプリの登録
    • ApplicationIdを登録することでアプリをID指定してCastできる

今回利用するサンプルのReceiverアプリCastAndroidTvReceiverのApplicationIdは公開登録されている。
今回の検証では利用する開発デバイスを登録するだけで良い。

開発デバイスの登録処理には数分掛かる

サンプルアプリを動かす

Cast Sender

動画を送る側のアプリはChromeブラウザ上で動作するWebアプリ CastVideos-chrome を利用する
下記サイトを参考にChromeでSenderアプリを実行する

Cast Receiver

キャストされた動画を再生するサンプルアプリは CastAndroidTvReceiver を利用した。Android TVで動作する
下記サイトを参考にAndroid Studioでコンパイルして実行する

サンプルアプリでできること

Chromeブラウザ上で動作しているCastVideos-chrome側で再生していた動画をCastAndroidTvReceiverをインストールしたAndroid TV上へキャストして再生することができた。

Cast Receiverの改造

Cast Receiver側でキャストのリクエストを受け付けた時に動画再生する代わりにブラウザを起動させる。
動画再生は失敗したことにしてSender側に通知する

修正箇所は下記ファイルの一箇所

app-java/src/main/java/com/google/sample/cast/atvreceiver/ui/PlaybackVideoFragment.java

改造した Cast Receiver でブラウザの起動

キャスト可能なデバイスを見つけた際にはCastVideos-chromeで再生している動画のコントロール部分にキャストアイコンが表示される。そのキャストアイコンからADT-3デバイス(Android TV)を選択してキャストしている。キャスト要求をAndroid TV上のCastAndroidTvReceiverを処理するタイミングでブラウザを起動した。

参考サイト

Google Cast SDK

Google Castサンプルアプリ

Google Castアプリ開発者登録とアプリ登録

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?