【问题标题】:AndroidTV TvInputService ImplementationAndroidTV TvInputService 实现
【发布时间】:2016-08-04 15:28:50
【问题描述】:

我在实现 TvInputService 时遇到问题。

我有来自服务器的有关频道的所有信息(结束/开始时间、Uri 地址、ID、名称等)

我的目标是创建一个应用程序来根据从服务器获取的这些信息设置流媒体频道。 我试过这个http://developer.android.com/training/tv/tif/tvinput.html ...即使你我理解理论(大部分),我还是新手,因为网站没有提供编码示例和详尽的解释,这真的很令人沮丧。 我也尝试了android提供的Sample,但这对于我想做的事情来说太复杂了,而且让我更加困惑。

有人可以通过一些关于 TvInputService 实现的示例来解释(如果可能的话,以简单的方式)来帮助我吗?谢谢!

【问题讨论】:

    标签: android android-tv


    【解决方案1】:

    您可能想使用我的库,ChannelSurfer,它极大地简化了电视输入服务的开发。

    创建输入服务需要执行几个主要步骤。

    1. 声明可以访问哪些频道。
    2. 声明每个频道将播放哪些节目
    3. 当用户调到您的频道时,视频将如何显示

    这通常通过 SyncAdapters 和服务完成,尽管这个库将所有内容归结为您根据自己的规范创建的单个类。

    如果您需要更多帮助,还有一个示例应用程序。

    【讨论】:

    • 谢谢,我试试看:)
    • 我在理解设置活动的方式、内容和位置方面也有一点问题......我已经阅读了你的例子,但我仍然感到困惑,因为它们都是有很大的不同,你能用外行的方式解释里面应该有什么吗,一个小例子,尽可能详细吗?这对我有很大帮助:)
    • @Mokrab 你确定你有正确的权限和清单细节吗?让我们从一个简单的InputProvider 开始: @Override public List getAllChannels(Context mContext) { Log.d(TAG, "Get all channels"); List 频道 = new ArrayList(); channels.add(new Channel() .setName("Time.Is") .setNumber("1"));退货渠道; } 这将为您的服务创建通道。
    • @Override public List getProgramsForChannel(Context 被忽略,Uri channelUri,Channel channelInfo,long startTimeMs,long endTimeMs) { p = new Program.Builder(getGenericProgram(channelInfo)) .setTitle("什么时间到了?") .setInternalProviderData("time.is") .setDescription("一个不断更新的网站") .build(); } 这将向频道添加一个新节目,并出现在指南中。
    • @Override public boolean onTune(Channel channel) { play(getProgramRightNow(channel).getInternalProviderData()); } 当用户调到特定频道时,您会告诉系统开始播放与指南中当前节目相对应的视频。
    【解决方案2】:

    基于这个documentation,那些实现电视输入服务的人通常应该通过从这个类派生并提供他们自己的基于TvInputService.Session的会话实现来实现。

    您的应用清单必须声明您的TvInputService,然后指定BIND_TV_INPUT 权限以允许服务将电视输入连接到系统。

    <service android:name="com.example.sampletvinput.SampleTvInput"
        android:label="@string/sample_tv_input_label"
        android:permission="android.permission.BIND_TV_INPUT">
        <intent-filter>
            <action android:name="android.media.tv.TvInputService" />
        </intent-filter>
        <meta-data android:name="android.media.tv.input"
          android:resource="@xml/sample_tv_input" />
    </service>
    

    你可以在 GitHub 上查看这个example

    【讨论】:

    • 谢谢,我一开始在清单中添加了代码,但我卡住的部分是 TvInputService 类本身。我似乎无法意识到 TvInputServicce.Session 的方法需要做什么
    【解决方案3】:

    我在尝试安装频道后收到“无法开始自动扫描‘授权’”。我正在使用来自 ChannelSurfer 的文件,设法使提供者和希望的设置(仍然对此感到困惑),但我被困在这部分......控制台不会抛出一个错误,但电视会显示上述声明。为什么会发生这种情况以及可能的解决方法是什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 2015-08-30
      • 2023-03-16
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多