【发布时间】:2018-10-01 06:19:31
【问题描述】:
我正在开发电视推荐/主屏幕频道应用程序。
我已经成功地在 Android TV 主屏幕上显示了我的应用程序中的程序列表,并且每当用户从主屏幕选择任何程序时都能够启动 VideoPlaybackActivity。
问题:无法启动用户在主屏幕上选择的特定视频
这是我编写的用于在VideoListingActivity中启动程序的代码
public void dynamicPrograms() {
for (Movie movie : movieArrayListHomeScreen) {
Uri posterArtUri = Uri.parse(movie.getImageUrl(Movie.IMAGE_ICON));
Uri previewVideoUri = Uri.parse(movie.getPlaybackUrl());
PreviewProgram program = new PreviewProgram.Builder()
.setChannelId(channelId)
.setType(TvContractCompat.PreviewPrograms.TYPE_MOVIE)
.setTitle(movie.getName())
.setDescription(movie.getName() + " description goes here")
.setPosterArtUri(posterArtUri)
//.setPreviewVideoUri(previewVideoUri)
.setInternalProviderId(String.valueOf(movie.getId()))
.setContentId(String.valueOf(movie.getId()))
.setIntentUri(Uri.parse(SCHEME + "://" + APPS_LAUNCH_HOST
+ "/" + PLAY_VIDEO_ACTION_PATH + "/" + movie))
.build();
Uri programUri = getApplicationContext().getContentResolver()
.insert(TvContractCompat.PreviewPrograms.CONTENT_URI, program.toContentValues());
long programId = ContentUris.parseId(programUri);
Log.d("programId:", String.valueOf(programId));
}
}
注意:我正在使用 Intent 传递数据,但在 VideoPlaybackActivity 中没有得到相同的结果,但是如果我在 Activity 中使用相同的 Intent(假设在 Detail Activity 中)来调用 VideoPlaybackActivity,那么我会得到所选/特定视频的数据,因为我在 Logcat 中打印相同
这就是我在 VideoDetailsActivity 中用来在 VideoPlaybackActivity 中播放选定视频的方法
Intent intent = new Intent (v.getContext (), VideoPlaybackActivity.class);
intent.putExtra (VideoPlaybackActivity.EXTRA_MOVIE, movie);
startActivity (intent);
但是当我直接从 Android TV 主屏幕调用 VideoPlaybackActivity(未在 Logcat 中获取特定视频的值)因此无法启动 VideoPlaybackActivity 来播放特定视频
Manifest.xml
<activity android:name=".ui.activity.VideoPlaybackActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:scheme="androidtvhomescreenchannels"
android:host="com.androidtv.hsc"
android:pathPrefix="/playvideo" />
</intent-filter>
</activity>
注意:甚至,我想知道我从主屏幕中选择了哪个特定程序,我很想在 Logcat 中看到该程序/电影的名称
【问题讨论】:
-
当你选择行并且点击方法是 onItemClicked 时它是否总是显示第一个视频??
-
播放默认视频并且该视频不属于行
-
for (Movie movie1 : movieArrayListHomeScreen) 正在循环调用意图。似乎有问题。
-
那么你的想法,应该如何@Jay
-
能否分享一下onItemClicked的代码,方便分析。
标签: android android-8.0-oreo android-tv homescreen leanback