これは Delphi Advent Calendar 1日目の記事です。
Android TV プロローグ
先日テレビを買いました!
TV 名前は Bravia X9350D
ごく普通の僕は、ごく普通にお金を払い、ごく普通に購入しました
でもただひとつ違っていたのは、このテレビは AndroidTV だったのです!
ということで、Delphi で Android TV アプリを作る方法を紹介します。
(とはいえ、すごく普通の事です…)
#Android TV とは
Android 5.0 をベースにした TV 用の OS です。
TV とは別の世界に Android TV があるわけではなく、Android TV の上に全ての機能が実装されています。
開発したのは Google ですが、開発パートナーとして Sony がテレビ部分に関してアドバイスをしたとのこと…
また、SoC については台湾 MediaTek が Google と共同で開発したそうです。
##メリット
-
Google Play からアプリをダウンロードして使える
これが最大にして唯一のメリットです。
開発者目線でいえば、Android 開発のノウハウが使えるので、それは大きなメリットです。
ただし、Android そのままではありません。
違いについては後述します。
##デメリット
-
落ちる
Android なので普通に落ちます。むしろ落ちまくりです。
テレビを観る事すら、ままなりません! -
寿命
Android ベースの OS なので常にバージョンアップしていく必要があります(セキュリティとかの問題で)。
しかし、実際問題、大体2~3年前の端末は切り捨てられていきます。
つまり、今までのテレビのように何年も何十年も使えるわけではありません!
##Android との違い
TV 用のため、いくつか変更されています。
###アプリに審査がある
リビングに置かれるという性質からか、Android TV 用のアプリは審査があります。
審査を通らないと Google Play に公開できません。
###ハードウェアが違う
テレビなので基本的にタッチパネルではないため直接的に UI を操作できず、操作はもっぱらリモコンのクリックになります。
そのため、UI のイベントは OnTouch ではなく OnClick に反応する様にします。
また、カメラやセンサーなどのテレビとして必要の無い機能もありません。
これらに留意して UI を構築しなければなりません。
###暗黙的 Intent があまり使えない
テレビなので基本的にテレビに要らない機能がありません。
たとえば、メーラーやブラウザがありません(※ただし Bravia には Opera が載っています)。
なので、Intent を使った呼び出しが失敗しうる事を考えながらコードを組まなければなりません。
#Android TV の開発
##開発者モード
Android TV のアプリを開発するにあたって、通常の Android と同じように開発者向けオプションを有効にせねばなりません。
これは非常に普通な手順です。
##IPの取得
テレビとの接続には WiFi や有線 LAN を使うので IP を調べます。
##接続
ここまで準備ができたら adb を使って AndroidTV に接続します。
次のように adb connect を使います。
; xxx.xxx.xxx.xxx は TV の IP
adb connect xxx.xxx.xxx.xxx:5555
ポート番号 5555 は adb のデフォルトのポート番号です。
これで接続に成功するとあとは通常の adb に対する操作がすべて利用可能になります。
たとえば adb logcat なども普通に動作します。
#Delphi で開発
adb over WiFi で Android TV に繋がったら Delphi を起動してみます。
すると!
プロジェクトマネージャに、Android TV のデバイスが表示されているはずです。
あとは、いつも通りプロジェクトをビルドして実行すると…
無事動作しました!!!
ということで、導入編はここまで!!