gpt4 book ai didi

java - 将自定义用户操作添加到 Android 媒体 session

转载 作者:行者123 更新时间:2023-12-05 03:03:36 25 4
gpt4 key购买 nike

我正在尝试向我的媒体 session 添加自定义用户操作,以便它显示在 android 自动操作卡上,但我似乎无法让它工作。我环顾四周,但没有找到太多关于如何显式添加自定义操作的信息。我已经包含了所有相关代码,这些代码是我尝试实现的唯一自定义操作的一部分。

我想知道我遗漏了什么和/或做错了什么。谢谢。

 public class MyMediaBrowserService extends MediaBrowserServiceCompat{

//Variables Declared here ...

@Override
public void onCreate(){

mediaSession = new MediaSessionCompat(this, TAG);
mediaSessionCallback = new MyMediaSessionCallback();
mediaSession.setCallback(mediaSessionCallback);

// Enable callbacks from MediaButtons and TransportControls
mediaSession.setFlags(
MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);

MediaSessionCompat.Token token = mediaSession.getSessionToken();
setSessionToken(token);

mediaNotificationManager = new MediaNotificationManager(this);

// Set an initial PlaybackState with ACTION_PLAY, so media
buttons can start the player
mStateBuilder = new PlaybackStateCompat.Builder()
.setActions(
PlaybackStateCompat.ACTION_PLAY |
PlaybackStateCompat.ACTION_PAUSE |
PlaybackStateCompat.ACTION_SKIP_TO_NEXT |
PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS)
.addCustomAction(CUSTOM_ACTION_REPEAT, "Repeat Mode",
R.drawable.ic_repeat_none);

mediaSession.setPlaybackState(mStateBuilder.build());

mediaSession.setActive(true);
mediaPlayer = new DefaultMediaPlayer(this,
new DefaultMediaPlaybackListener());

}

...

public class MyMediaSessionCallback extends
MediaSessionCompat.Callback {

//Variables Declared here ...

// The following methods are actually implemented in the
// project, and functions as they are supposed to.
// They are mentioned here for the sake of showing their
// existence with relations to the PlaybackStateCompat set
// above.
@Override public void onAddQueueItem(MediaDescriptionCompat
description) { ... }
@Override public void onRemoveQueueItem(MediaDescriptionCompat
description) { ... }
@Override public void onPlayFromMediaId(String mediaId,
Bundle extras) { .... }
@Override public void onPlay() { ... }
@Override public void onPause() { ... }
@Override public void onStop() { ... }
@Override public void onSkipToNext() { ... }
@Override public void onSkipToPrevious() { ... }
@Override public void onSeekTo(long pos) { ... }

// This is the actual implement of the onCustomAction method
// I never got it working so I figured I'll start by logging it
// first before spending time coding it
@Override
public void onCustomAction(String action,
Bundle extras) {

if(action.equals(CUSTOM_ACTION_REPEAT))
Log.e(TAG, "Custom action is REPEAT");


}

...

}

}

最佳答案

为了添加自定义操作并给定一个 PlayBackStateCompat.Builder,您可以按如下方式添加自定义操作:

mStateBuilder.addCustomAction(
new PlaybackStateCompat.CustomAction.Builder(
CUSTOM_ACTION_REPLAY,
getString(R.string.custom_action_replay),
R.drawable.ic_replay).build()
);

然后您必须像之前那样添加代码来处理自定义操作。上面的代码应该可以工作,并正确显示 Android Auto 上的操作,我用它来显示自定义操作。希望这对我有所帮助,即使我来晚了

关于java - 将自定义用户操作添加到 Android 媒体 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53708164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com