Android Google Cast - я не могу установить миниатюру изображения в уведомлении и на экране блокировки в соответствии с текущим видео. - PullRequest
0 голосов
/ 01 октября 2018

Я просто пытаюсь показать миниатюру изображения, которое в данный момент воспроизводится на Chrome, с помощью моего приложения для отправки Android.Отображается в полноэкранном режиме блокировки, но теперь отображается на изображении панели уведомлений и на изображении уведомления на экране блокировки. В настоящее время заголовок обновляется в соответствии с текущим видео, воспроизводимым на Chrome-Cast, но изображение не загружается.

Это будетздорово, если кто-нибудь решит мою проблему.Спасибо заранее.

enter image description hereenter image description here Мой код Android ниже:

  if (!TextUtils.isEmpty(imageUrl)) {

                                videoMetadata.addImage(new WebImage(Uri.parse("https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/images/480x270/DesigningForGoogleCast2-480x270.jpg")));
                                videoMetadata.addImage(new WebImage(Uri.parse("https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/images/780x1200/DesigningForGoogleCast-887x1200.jpg")));
                            }
                            MediaInfo mediaInfo = null;

                            if (videoMetadata != null) {
                                mediaInfo = new MediaInfo.Builder(videoUrl)
                                        .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
                                        .setContentType("videos/mp4")
                                        .setMetadata(videoMetadata)
                                        .build();
                                arlMediaItem.add(new MediaQueueItem.Builder(mediaInfo).build());


                            }

            resultPendingResult = getRemoteMediaClient().queueLoad(getArrayFromList(arlMediaItem)
                    , starPos, MediaStatus.REPEAT_MODE_REPEAT_OFF, null);
            if (resultPendingResult != null)
                resultPendingResult.setResultCallback(new ResultCallback<RemoteMediaClient.MediaChannelResult>() {
                    @Override
                    public void onResult(@NonNull RemoteMediaClient.MediaChannelResult mediaChannelResult) {
                        switch (mediaChannelResult.getStatus().getStatusCode()) {
                            case RemoteMediaClient.STATUS_FAILED:
                                break;
                            case RemoteMediaClient.RESUME_STATE_PAUSE:
                                break;
                            case RemoteMediaClient.RESUME_STATE_PLAY:
                                break;
                        }
                    }
                });

CastOptionsProvider


public class CastOptionsProvider implements OptionsProvider {
    static  String  TAG = CastOptionsProvider.class.getSimpleName();

    @Override
    public CastOptions getCastOptions(Context context) {

        NotificationOptions notificationOptions = new NotificationOptions.Builder()
                .setActions(Arrays.asList(
                        MediaIntentReceiver.ACTION_TOGGLE_PLAYBACK,
                        MediaIntentReceiver.ACTION_STOP_CASTING), new int[]{0,1})
                .setTargetActivityClassName(AdvancedVideoPlayerActivity.class.getName())
                .build();
        CastMediaOptions mediaOptions = new CastMediaOptions.Builder()
                .setImagePicker(new ImagePickerImpl())
                .setNotificationOptions(notificationOptions)
                .setExpandedControllerActivityClassName(AdvancedVideoPlayerActivity.class.getName())
                .build();

        return new CastOptions.Builder()
                .setReceiverApplicationId(CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID)
                .setCastMediaOptions(mediaOptions)
                .build();




    }
    @Override
    public List<SessionProvider> getAdditionalSessionProviders(Context context) {
        return null;
    }


    private static class ImagePickerImpl extends ImagePicker {

        @Override
        public WebImage onPickImage(MediaMetadata mediaMetadata, ImageHints imageHints) {
            if ((mediaMetadata == null) || !mediaMetadata.hasImages()) {
                return null;
            }
            List<WebImage> images = mediaMetadata.getImages();
            if (images.size() == 1) {
                return images.get(0);
            } else {
                if (imageHints.getType() == ImagePicker.IMAGE_TYPE_MEDIA_ROUTE_CONTROLLER_DIALOG_BACKGROUND) {

                    return images.get(0);
                } else {
                    return images.get(1);
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...