我们如何显示运行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锁屏图像所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)