我目前正在开发具有视频和音频功能的应用程序的一部分,最近开始重构代码库。目标是集成MediaSession/ MediaController和MediaBrowserService/ MediaBrowser框架。
我们使用ExoPlayer和PlayerControlView更具体的PlayerView的视频和音频组件,它需要提及的播放器实例PlayerControlView:
/**
* Sets the {@link Player} to control.
*
* @param player The {@link Player} to control, or {@code null} to detach the current player. Only
* players which are accessed on the main thread are supported ({@code
* player.getApplicationLooper() == Looper.getMainLooper()}).
*/
public void setPlayer(@Nullable Player player) {...
Run Code Online (Sandbox Code Playgroud)
但是,在Android开发者职位和文档的MediaBrowserService,播放器实例应在服务下载。此外,客户端站点(MediaBrowser 和 MediaController)通过connect()方法和MediaBrowserConnectionCallback为其提供服务的唯一方法,这使得将播放器的实例传递给 PlayerControlView(或其他方式)是不可能的。
我曾尝试使用各种回调,例如 …
android exoplayer mediabrowserservice mediabrowserservicecompat mediasession
if ('mediaSession' in navigator) {
navigator.mediaSession.metadata = new MediaMetadata({
title: "TITLE",
artist: "ARTIST",
album: "ALBUM",
artwork: [{
sizes: "320x180",// <- MUST BE EXACTLY!
src: "https://i.ytimg.com/vi/yAruCvT7P7Y/hqdefault.jpg?sqp=-oaymwEZCNACELwBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLAfHWw5BHrQugGsdPYy4eIXcqMTnQ",
type: ""
}]
});
navigator.mediaSession.setActionHandler('play', function () { });
navigator.mediaSession.setActionHandler('pause', function () { });
navigator.mediaSession.setActionHandler('seekbackward', function () { });
navigator.mediaSession.setActionHandler('seekforward', function () { });
navigator.mediaSession.setActionHandler('previoustrack', function () { });
navigator.mediaSession.setActionHandler('nexttrack', function () { });
}
Run Code Online (Sandbox Code Playgroud) My HTML5 game has some background music that uses Howler.js in "html5" mode, which apparently triggers Chrome for Android's media playback notifications. This means a notification appears while the user has my game open in any tab:
The game is a good citizen and pauses the music while the tab is not in focus, so there is no need for this notification. It's even actively confusing, because the user can pause and resume the game's background music without being …
我有一个通过播放媒体的应用程序MediaSessionCompat。
我使用 为通知抽屉创建了一个通知NotificationCompat,并使用 发布它NotificationManagerCompat.notify,它看起来很棒。(参见屏幕截图。)
我的问题是锁屏。它仅显示“播放”、“上一曲目”和“下一曲目”图标。我缺少在当前播放的曲目中前后跳转的控件。(参见屏幕截图。)
我用来MediaSession.setPlaybackState指定可用的操作,并且包括PlaybackStateCompat用于倒带、快进、跳到上一个和跳到下一个的所有适当操作。
锁定屏幕的配置是否与通知不同?或者开发人员对此处提供的控件的控制权是否较少?
先感谢您!
下面的代码是带有使用媒体会话的控件的音乐通知播放器。每当我单击通知中的控件时,它就会崩溃并出现上述错误。请参阅下面的代码,如果我错了,请纠正我。在下面的代码中,我使用媒体会话和广播接收器来构建通知。“track”是我所有歌曲数据的模型类。
try {
if (track.getImage() == null) {
track.setImage(BitmapFactory.decodeResource(context.getResources(),
R.mipmap.ic_launcher));
}
NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);
MediaSessionCompat mediaSessionCompat = new MediaSessionCompat(context, "tag");
mediaSessionCompat.setMetadata(
new MediaMetadataCompat.Builder()
.putString(MediaMetadata.METADATA_KEY_TITLE, track.getTitle())
.putString(MediaMetadata.METADATA_KEY_ARTIST, track.getArtist())
.putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, track.getImage())
.putString(MediaMetadata.METADATA_KEY_ALBUM, track.getAlbum())
.build()
);
mediaSessionCompat.setFlags(
MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
PlaybackStateCompat.Builder stateBuilder = new PlaybackStateCompat.Builder();
stateBuilder.setActiveQueueItemId(MediaSession.QueueItem.UNKNOWN_ID);
long actions = PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_STOP | PlaybackStateCompat.ACTION_SKIP_TO_NEXT | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS;
stateBuilder.setActions(actions);
if (isPlaying) {
stateBuilder.setState(PlaybackStateCompat.STATE_PLAYING, 0, 1.0f);
mediaSessionCompat.setActive(true);
} else {
stateBuilder.setState(PlaybackStateCompat.STATE_PAUSED, 0, 1.0f);
mediaSessionCompat.setActive(true);
}
mediaSessionCompat.setPlaybackState(stateBuilder.build());
Bitmap icon = track.getImage();
PendingIntent pendingIntentPrevious;
int drw_previous;
// …Run Code Online (Sandbox Code Playgroud) notifications android webview android-mediaplayer mediasession
mediasession ×5
android ×4
audio ×2
exoplayer ×1
html5 ×1
javascript ×1
lockscreen ×1
webview ×1