Запустите определенную программу на главном экране Android TV - PullRequest
0 голосов
/ 01 октября 2018

Я работаю в приложении «Рекомендации по телевидению / Каналы на главном экране».

Я успешно показал список программ из моего приложения на главном экране 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, но если я использую тот же Intent в Activity (предположим, что в Detail Activity), чтобы вызвать VideoPlaybackActivity, я получаю данные для выбранного / конкретного видео, поскольку я печатаю их в Logcat

Это то, что я использую в VideoDetailsActivity для воспроизведениявыбранного видео в VideoPlaybackActivity

Intent intent = new Intent (v.getContext (), VideoPlaybackActivity.class);
                                intent.putExtra (VideoPlaybackActivity.EXTRA_MOVIE, movie);
                                startActivity (intent);

Но когда я напрямую вызываю VideoPlaybackActivity с главного экрана Android TV (не получаюпоэтому не удалось запустить 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

...