Java-Chromecast Sender v2.7.0锁屏图像

Java-Chromecast Sender v2.7.0锁屏图像,第1张

概述我们如何显示运行v2.7.0的chromecast发送器应用的锁屏插图.我花了大约2天的最好的时间来解决这个问题.v2.7.0库当前在VideoCastManager.java类中具有以下方法:privatevoidsetBitmapForLockScreen(MediaInfovideo){if(video==null||mMediaSessionCompat==null){

我们如何显示运行v2.7.0的Chromecast发送器应用的锁屏插图.我花了大约2天的最好的时间来解决这个问题.

v2.7.0库当前在VIDeoCastManager.java类中具有以下方法:

private voID setBitmapForLockScreen(MediaInfo vIDeo) {    if (vIDeo == null || mMediaSessionCompat == null) {        return;    }    Uri imgurl = null;    Bitmap bm = null;    List<WebImage> images = vIDeo.getMetadata().getimages();    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) {        if (images.size() > 1) {            imgurl = images.get(1).getUrl();        } else if (images.size() == 1) {            imgurl = images.get(0).getUrl();        } else if (mContext != null) {            // we don't have a url for image so get a placeholder image from resources            bm = BitmapFactory.decodeResource(mContext.getResources(),                    R.drawable.album_art_placeholder_large);        }    } else if (!images.isEmpty()) {        imgurl = images.get(0).getUrl();    } else {        // we don't have a url for image so get a placeholder image from resources        bm = BitmapFactory.decodeResource(mContext.getResources(),                R.drawable.album_art_placeholder);    }    if (bm != null) {        MediaMetadataCompat currentMetadata = mMediaSessionCompat.getController().getMetadata();        MediaMetadataCompat.Builder newBuilder = currentMetadata == null                ? new MediaMetadataCompat.Builder()                : new MediaMetadataCompat.Builder(currentMetadata);        mMediaSessionCompat.setMetadata(newBuilder                .putBitmap(MediaMetadataCompat.MetaDATA_KEY_ART, bm)                .build());    } else {        if (mlockScreenFetchTask != null) {            mlockScreenFetchTask.cancel(true);        }        mlockScreenFetchTask = new FetchBitmapTask() {            @OverrIDe            protected voID onPostExecute(Bitmap bitmap) {                if (mMediaSessionCompat != null) {                    MediaMetadataCompat currentMetadata = mMediaSessionCompat.getController()                            .getMetadata();                    MediaMetadataCompat.Builder newBuilder = currentMetadata == null                            ? new MediaMetadataCompat.Builder()                            : new MediaMetadataCompat.Builder(currentMetadata);                    mMediaSessionCompat.setMetadata(newBuilder                            .putBitmap(MediaMetadataCompat.MetaDATA_KEY_ART, bitmap)                            .build());                }                mlockScreenFetchTask = null;            }        };        mlockScreenFetchTask.execute(imgurl);    }}

我尝试用我自己的自定义图像交换album_art_placeholder_large可绘制对象,没有结果.还尝试通过以下行添加位图:

putBitmap(MediaMetadataCompat.MetaDATA_KEY_ALBUM_ART, bm)

但没有任何效果.我到底在这里想念什么?需要使用什么MediaMetadataCompat键来显示锁屏插图?
还是我从错误的地方开始?

我尝试过的其他一些链接却无济于事:

Android MediaMetadata image on lockscreen is zoomed

Adding more fields in MediaMetada GoogleCast

截至目前,在线文档非常糟糕,并没有太大帮助.

谢谢!

编辑:经过进一步调查,锁定设备以显示锁屏图像似乎需要15-20分钟.不知道为什么.

编辑2:setupMediaSession方法.

private voID setUpMediaSession(final MediaInfo info) {        if (!isFeatureEnabled(CastConfiguration.FEATURE_LOCKSCREEN)) {            return;        }        if (mMediaSessionCompat == null) {            Componentname mediaEventReceiver = new Componentname(mContext,                    VIDeoIntentReceiver.class.getname());            mMediaSessionCompat = new MediaSessionCompat(mContext, "TAG", mediaEventReceiver,                    null);            mMediaSessionCompat.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_buttonS                    | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTRolS);            mMediaSessionCompat.setActive(true);            mMediaSessionCompat.setCallback(new MediaSessionCompat.Callback() {                @OverrIDe                public boolean onMediabuttonEvent(Intent mediabuttonIntent) {                    KeyEvent keyEvent = mediabuttonIntent                            .getParcelableExtra(Intent.EXTRA_KEY_EVENT);                    if (keyEvent != null && (keyEvent.getKeyCode() == KeyEvent.KEYCODE_MEDIA_PAUSE                            || keyEvent.getKeyCode() == KeyEvent.KEYCODE_MEDIA_PLAY)) {                        toggle();                    }                    return true;                }                @OverrIDe                public voID onPlay() {                    toggle();                }                @OverrIDe                public voID onPause() {                    toggle();                }                private voID toggle() {                    try {                        togglePlayback();                    } catch (CastException | TransIEntNetworkdisconnectionexception |                        Noconnectionexception e) {                        LOGE(TAG, "MediaSessionCompat.Callback(): Failed to toggle playback", e);                    }                }            });        }        mAudioManager.requestAudioFocus(null, AudioManager.STREAM_MUSIC,                AudioManager.AUdioFOCUS_GAIN_TRANSIENT_MAY_DUCK);        PendingIntent pi = getCastControllerPendingIntent();        if (pi != null) {            mMediaSessionCompat.setSessionActivity(pi);        }        if (info == null) {            mMediaSessionCompat.setPlaybackState(new PlaybackStateCompat.Builder()                .setState(PlaybackStateCompat.STATE_NONE, 0, 1.0f).build());        } else {            mMediaSessionCompat.setPlaybackState(new PlaybackStateCompat.Builder()                .setState(PlaybackStateCompat.STATE_PLAYING, 0, 1.0f)                .setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE).build());        }        // Update the media session's image        updateLockScreenImage(info);        // update the media session's Metadata        updateMediaSessionMetadata();        mMediaRouter.setMediaSessionCompat(mMediaSessionCompat);    }

解决方法:

定义MediaInfo时,您是否定义了“较大”的专辑封面? ccl假定您有一个较小的窗口,设置为index = 0,它将用于通知,小型控制器和媒体路由器控制器对话框,而较大的窗口(MediaInfo中的第二个图像,index = 1)将用于锁屏和全屏遥控器.如果这些图像在那里,ccl将自动使用它们.作为测试,运行CastVIDeos-androID(v2),看看是否适合您.

总结

以上是内存溢出为你收集整理的Java-Chromecast Sender v2.7.0锁屏图像全部内容,希望文章能够帮你解决Java-Chromecast Sender v2.7.0锁屏图像所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095409.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存