Delphi で Android TV 開発 ~導入編~

  • 2
    いいね
  • 0
    コメント

これは 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 と共同で開発したそうです。

MediaTek、Android TV向けSoCとAndroid Wear向けSoCを発表

メリット

  • 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 と同じように開発者向けオプションを有効にせねばなりません。
これは非常に普通な手順です。

qiita1.png

IPの取得

テレビとの接続には WiFi や有線 LAN を使うので IP を調べます。

qiita2.png

接続

ここまで準備ができたら 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 のデバイスが表示されているはずです。

qiita3.png

あとは、いつも通りプロジェクトをビルドして実行すると…

qiita4.png

無事動作しました!!!

ということで、導入編はここまで!!

この投稿は Delphi Advent Calendar 20161日目の記事です。