[Android TV] 新規プロジェクト

Compose for TVを使用する場合の新規プロジェクト作成の流れ

最近のAndroid StudioではAndroid TV向けのプロジェクトのテンプレートは無いですが
普通のアプリケーションと同じに実装できてEmpty ActivityにAndroid TV向けの設定を追加する形で対応できます
※Activityの追加でAndroid TV Blank Views Activityを選択するとテンプレートのActivityなどが自動生成されますがTV for Composeを使用する場合は不要

必要な設定はDeveloperサイトで確認できます
※日本語訳は古いページが混在してるので英語版で確認すること
https://developer.android.com/training/tv/start/start
https://developer.android.com/training/tv/playback/compose

・leanback/touchscreenのサポートoff
・banner(とアイコン)の追加 ※アイコンはテンプレートで設定済み
・インテントフィルターにLEANBACK_LAUNCHERを追加

<manifest>
    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />
    <uses-feature
        android:name="android.software.leanback"
        android:required="false" />
    <application
        ...
        android:banner= "@mipmap/ic_launcher"
    >
        <activity>
            <intent-filter>
                ...
                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
        </activity>
    </application>
</manifest>

・TV for Composeの依存関係を追加
androidx.tv:tv-foundation
androidx.tv:tv-material

[versions]
tv-compose = "1.0.0-alpha10"

[libraries]
androidx-tv-foundation = { group = "androidx.tv", name = "tv-foundation", version.ref = "tv-compose" }
androidx-tv-material = { group = "androidx.tv", name = "tv-material", version.ref = "tv-compose" }
dependencies {
    implementation(libs.androidx.tv.foundation)
    implementation(libs.androidx.tv.material)
}

Android TVプロジェクトで必須ではないけど必要そうな設定を追加

・おそらく使うであろうInternetのパーミッション追加
・HTTP通信を使う場合はusesCleartextTrafficをtrue(API28以降は初期値false)
 ※動画や動画情報を取得するWebApiのurlがhttpsでない場合など
・設定しなくて画面は横向きだけど明示的にlandscapeを指定

<manifest>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true"
    >
        <activity
            ...
            android:screenOrientation="landscape"
        >
        </activity>
    </application>
</manifest>

Android Studio Hedgehog 2023.1.1 RC 3 built on November 3, 2023