1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (C) 2015 The Android Open Source Project
3
4     Licensed under the Apache License, Version 2.0 (the "License");
5     you may not use this file except in compliance with the License.
6     You may obtain a copy of the License at
7
8          http://www.apache.org/licenses/LICENSE-2.0
9
10     Unless required by applicable law or agreed to in writing, software
11     distributed under the License is distributed on an "AS IS" BASIS,
12     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13     See the License for the specific language governing permissions and
14     limitations under the License.
15-->
16
17<manifest xmlns:android="http://schemas.android.com/apk/res/android"
18    package="com.example.android.sampletvinput">
19
20    <!-- Required to play internet-based streaming contents. -->
21    <uses-permission android:name="android.permission.INTERNET"/>
22    <!-- Required to register a SyncStatusObserver. -->
23    <uses-permission android:name="android.permission.READ_SYNC_STATS"/>
24    <!-- Required to enable our SyncAdapter after it's created. -->
25    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
26    <!-- Required because we're manually creating a new account. -->
27    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
28    <!-- Required to update or read existing channel and program information in TvProvider. -->
29    <uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" />
30    <!-- Required to update channel and program information in TvProvider. -->
31    <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
32
33    <application android:label="@string/sample_tv_input"
34            android:icon="@drawable/android_48dp"
35            android:theme="@style/Theme.Leanback" >
36        <!-- Launched by the TV app before it uses SimpleTvInputService to set up channels for this
37        input. -->
38        <activity android:name=".simple.SimpleTvInputSetupActivity" >
39            <intent-filter>
40                <action android:name="android.intent.action.MAIN" />
41            </intent-filter>
42        </activity>
43        <!-- TV input sample which includes minimal implementation for seeing a video on the TV app.
44        Requires "android.permission.BIND_TV_INPUT" to ensure that only system services can bind.
45        Lots of features including EPG and parental controls are left out in favor of keeping this
46        sample simple. For a fully-featured example, see RichTvInputService. -->
47        <service android:name=".simple.SimpleTvInputService"
48            android:permission="android.permission.BIND_TV_INPUT"
49            android:label="@string/simple_input_label">
50            <!-- Required filter used by the system to launch our account service. -->
51            <intent-filter>
52                <action android:name="android.media.tv.TvInputService" />
53            </intent-filter>
54            <!-- An XML file which describes this input. This provides a pointer to the
55            SimpleTvInputSetupActivity to the system/TV app. -->
56            <meta-data android:name="android.media.tv.input"
57                android:resource="@xml/simpletvinputservice" />
58        </service>
59
60        <!-- Launched by the TV app before it uses RichTvInputService. This registers channels and
61        sets up SyncAdapter to provide program information in the background. -->
62        <activity android:name=".rich.RichTvInputSetupActivity" >
63            <intent-filter>
64                <action android:name="android.intent.action.MAIN" />
65            </intent-filter>
66        </activity>
67        <!-- Launched by the TV app when user wants to change the settings for this input. The
68        settings activity is expected to be used for the existing configuration. E.g. subscription
69        change, fine tuning of the channels, etc. -->
70        <activity android:name=".rich.RichTvInputSettingsActivity">
71            <intent-filter>
72                <action android:name="android.intent.action.MAIN" />
73            </intent-filter>
74        </activity>
75        <!-- TV input which provides channels based on the streaming contents.
76        Requires "android.permission.BIND_TV_INPUT" to ensure that only system services can bind.
77        This provides the full implementation of TvInputService including EPG, subtitles,
78        multi-audio, parental controls, and overlay view.
79        -->
80        <service android:name=".rich.RichTvInputService"
81            android:permission="android.permission.BIND_TV_INPUT"
82            android:label="@string/rich_input_label">
83            <!-- Required filter used by the system to launch our account service. -->
84            <intent-filter>
85                <action android:name="android.media.tv.TvInputService" />
86            </intent-filter>
87            <!-- An XML file which describes this input. This provides pointers to the
88            RichTvInputSetupActivity and RichTvInputSettingsActivity to the system/TV app. -->
89            <meta-data android:name="android.media.tv.input"
90                android:resource="@xml/richtvinputservice" />
91        </service>
92
93        <!-- This service implements the SyncAdapter for updating program information regularly in
94        the background. It needs to be exported, so that the sync framework can access it. -->
95        <service android:name=".syncadapter.SyncService"
96            android:exported="true">
97            <intent-filter>
98                <action android:name="android.content.SyncAdapter" />
99            </intent-filter>
100            <meta-data android:name="android.content.SyncAdapter"
101                android:resource="@xml/syncadapter" />
102        </service>
103
104        <!-- Since the channel/program feed here does not require any authentication, we use a stub
105        account used for SyncAdapter. -->
106        <service android:name=".syncadapter.StubAccountService">
107            <intent-filter>
108                <action android:name="android.accounts.AccountAuthenticator" />
109            </intent-filter>
110            <meta-data android:name="android.accounts.AccountAuthenticator"
111                android:resource="@xml/authenticator" />
112        </service>
113    </application>
114
115    <uses-feature
116        android:name="android.hardware.touchscreen"
117        android:required="false" />
118    <uses-feature
119        android:name="android.software.leanback"
120        android:required="true" />
121    <!-- Required to expose this app in the store only when the device has TV input framework
122    with the TV app. -->
123    <uses-feature
124        android:name="android.software.live_tv"
125        android:required="true" />
126</manifest>
127