<?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2015 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.sampletvinput"> <!-- Required to play internet-based streaming contents. --> <uses-permission android:name="android.permission.INTERNET"/> <!-- Required to register a SyncStatusObserver. --> <uses-permission android:name="android.permission.READ_SYNC_STATS"/> <!-- Required to enable our SyncAdapter after it's created. --> <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/> <!-- Required because we're manually creating a new account. --> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/> <!-- Required to update or read existing channel and program information in TvProvider. --> <uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" /> <!-- Required to update channel and program information in TvProvider. --> <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" /> <application android:label="@string/sample_tv_input" android:icon="@drawable/android_48dp" android:theme="@style/Theme.Leanback" > <!-- Launched by the TV app before it uses SimpleTvInputService to set up channels for this input. --> <activity android:name=".simple.SimpleTvInputSetupActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> <!-- TV input sample which includes minimal implementation for seeing a video on the TV app. Requires "android.permission.BIND_TV_INPUT" to ensure that only system services can bind. Lots of features including EPG and parental controls are left out in favor of keeping this sample simple. For a fully-featured example, see RichTvInputService. --> <service android:name=".simple.SimpleTvInputService" android:permission="android.permission.BIND_TV_INPUT" android:label="@string/simple_input_label"> <!-- Required filter used by the system to launch our account service. --> <intent-filter> <action android:name="android.media.tv.TvInputService" /> </intent-filter> <!-- An XML file which describes this input. This provides a pointer to the SimpleTvInputSetupActivity to the system/TV app. --> <meta-data android:name="android.media.tv.input" android:resource="@xml/simpletvinputservice" /> </service> <!-- Launched by the TV app before it uses RichTvInputService. This registers channels and sets up SyncAdapter to provide program information in the background. --> <activity android:name=".rich.RichTvInputSetupActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> <!-- Launched by the TV app when user wants to change the settings for this input. The settings activity is expected to be used for the existing configuration. E.g. subscription change, fine tuning of the channels, etc. --> <activity android:name=".rich.RichTvInputSettingsActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> <!-- TV input which provides channels based on the streaming contents. Requires "android.permission.BIND_TV_INPUT" to ensure that only system services can bind. This provides the full implementation of TvInputService including EPG, subtitles, multi-audio, parental controls, and overlay view. --> <service android:name=".rich.RichTvInputService" android:permission="android.permission.BIND_TV_INPUT" android:label="@string/rich_input_label"> <!-- Required filter used by the system to launch our account service. --> <intent-filter> <action android:name="android.media.tv.TvInputService" /> </intent-filter> <!-- An XML file which describes this input. This provides pointers to the RichTvInputSetupActivity and RichTvInputSettingsActivity to the system/TV app. --> <meta-data android:name="android.media.tv.input" android:resource="@xml/richtvinputservice" /> </service> <!-- This service implements the SyncAdapter for updating program information regularly in the background. It needs to be exported, so that the sync framework can access it. --> <service android:name=".syncadapter.SyncService" android:exported="true"> <intent-filter> <action android:name="android.content.SyncAdapter" /> </intent-filter> <meta-data android:name="android.content.SyncAdapter" android:resource="@xml/syncadapter" /> </service> <!-- Since the channel/program feed here does not require any authentication, we use a dummy account used for SyncAdapter. --> <service android:name=".syncadapter.DummyAccountService"> <intent-filter> <action android:name="android.accounts.AccountAuthenticator" /> </intent-filter> <meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/authenticator" /> </service> </application> <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> <uses-feature android:name="android.software.leanback" android:required="true" /> <!-- Required to expose this app in the store only when the device has TV input framework with the TV app. --> <uses-feature android:name="android.software.live_tv" android:required="true" /> </manifest>