som*_*ant 5 notifications android seekbar
有谁知道android 10通知中的seekbar功能吗?
我似乎无法让位置指示器显示当前位置。该栏只是空白,但我可以单击通知中的栏来查找媒体。
我有正常的通知生成器代码,并且添加了此代码以使搜索栏在 libvlc 的“MediaPlayer.Event.Playing”事件中可单击
MediaMetadataCompat.Builder metadataBuilder = new MediaMetadataCompat.Builder();
metadataBuilder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, mMediaPlayer.getLength());
PlaybackStateCompat.Builder mStateBuilder = new PlaybackStateCompat.Builder()
.setState(PlaybackStateCompat.STATE_PLAYING, 1, 1.0f)
.setBufferedPosition(mMediaPlayer.getLength())
.setActions(
PlaybackStateCompat.ACTION_PLAY |
PlaybackStateCompat.ACTION_PAUSE |
PlaybackStateCompat.ACTION_SKIP_TO_NEXT |
PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS |
PlaybackStateCompat.ACTION_SEEK_TO |
PlaybackStateCompat.ACTION_PLAY_PAUSE);
mediaSession.setMetadata(metadataBuilder.build());
mediaSession.setPlaybackState(mStateBuilder.build());
Run Code Online (Sandbox Code Playgroud)
媒体播放大约一半,但没有指示其位置。
经过很长时间的寻找,最终我找到了解决方案。请执行以下步骤,让 SeekBar 在 Android 10 或更高版本中显示在通知中。
Long值,并将密钥MediaMetadataCompat.METADATA_KEY_DURATION放入 MediaSession.setMetadatamediaSession.setMetadata(MediaMetadataCompat.Builder()
.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, resource)
.putString(
MediaMetadataCompat.METADATA_KEY_ARTIST,
activeBookFile.title
)
.putString(
MediaMetadataCompat.METADATA_KEY_ALBUM,
AudioPlayerService.activeBook.title
)
.putString(
MediaMetadataCompat.METADATA_KEY_TITLE,
AudioPlayerService.activeBook.title
)
.putLong(
MediaMetadataCompat.METADATA_KEY_DURATION,
activeBookFile.duration
)
.build()
)
Run Code Online (Sandbox Code Playgroud)
ACTION_SEEK_TO到所有PlaybackStateCompat.setAction()方法中PlaybackStateCompat.setState()方法。setPlaybackState()fun updateMediaPlaybackState(currentPos: Long) {
mediaSession.setPlaybackState(
PlaybackStateCompat.Builder()
.setActions(
PlaybackStateCompat.ACTION_PLAY
or PlaybackStateCompat.ACTION_PLAY_PAUSE
or PlaybackStateCompat.ACTION_PAUSE
or PlaybackStateCompat.ACTION_SKIP_TO_NEXT
or PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS
or PlaybackStateCompat.ACTION_SEEK_TO
)
.setState(
getPlaybackState(),
currentPos,
1f,
SystemClock.elapsedRealtime()
)
.build()
)
}
Run Code Online (Sandbox Code Playgroud)
@PlaybackStateCompat.State
private fun getPlaybackState(): Int {
return when (currentState) {
is PlayerStoppedState -> PlaybackStateCompat.STATE_STOPPED
is PlayerPausedState -> PlaybackStateCompat.STATE_PAUSED
is PlayerResumingState -> PlaybackStateCompat.STATE_PLAYING
is PlayerLoadingState, is PlayerBufferingState -> PlaybackStateCompat.STATE_BUFFERING
is PlayerErrorState -> PlaybackStateCompat.STATE_ERROR
else -> PlaybackStateCompat.STATE_NONE
}
}
Run Code Online (Sandbox Code Playgroud)
onSeekTo(pos: Long)方法MediaSessionCompat.Callback()class PlayerMediaSessionCallback(mediaPlayer: MediaPlayer?) : MediaSessionCompat.Callback() {
// other callback methods
override fun onSeekTo(pos: Long) {
mediaPlayer?.seekTo(pos)
}
}
Run Code Online (Sandbox Code Playgroud)
updateMediaPlaybackState()(showNotification()播放、暂停、skipNext、skipPrevious、seek 等)更新:它似乎确实显示了位置,但当通知的颜色为深色时很难看到。由于某种原因,搜索栏没有根据通知颜色反转其颜色。
如果有人遇到此问题,请将通知背景设为白色,并查看它是否正在跟踪位置。
所以现在我需要弄清楚如何让栏在深色背景上显示浅色
| 归档时间: |
|
| 查看次数: |
5391 次 |
| 最近记录: |