gpt4 book ai didi

android - 如何通过转换控制接口(interface)捕获 UIMediaController 点击

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:55:53 25 4
gpt4 key购买 nike

我在我的应用程序中构建了一个完美运行的自定义类型转换发送器 - 我需要添加的唯一功能是一种监听“播放/暂停”和“跳过”按钮的方法,但谷歌的文档(就我已经能够搜索)没有给出任何线索,并且在添加了 Advanced Cast Features Docs 中显示的功能之后没用:

CastMediaOptions castMediaOptions = new CastMediaOptions.Builder()
.setMediaIntentReceiverClassName(CastIntentReceiver.class.getName())
.build();

return new CastOptions.Builder()
.setReceiverApplicationId(context.getString(R.string.cast_id))
.setCastMediaOptions(castMediaOptions)
.build();

我有一个 CastIntentReceiver,它扩展了 CastOptionsProvider 和 list 中引用的 MediaIntentReceiver

public class CastIntentReceiver extends MediaIntentReceiver {

public static String TAG = "CastIntentReceiver";

public CastIntentReceiver() {
Log.i(TAG, "CastIntentReceiver: Constructed!");
}
...
// The rest of the Override methods don't do anything

}

接收器正在工作,因为 Log 打印正在工作,但是没有调用 Override 方法(没有 Log 打印)。

以下是我的实现的一些额外细节:

所有转换函数都在两个单独的类中,CastManager( Controller )和 CastControls fragment ( View )添加到 MainActivity View (类似于 YouTube)的基础上。这两个类之间也有触发事物的接口(interface)。

在 CastManager 中,我设置了 UIMediaController 并绑定(bind)了 View :

View view = CastingBridge.CAST_CONTROLS_VIEW.findViewById(R.id.cast_drawer_controls);

uiMediaController = new UIMediaController(activity);
SeekBar seekBar = (SeekBar) view.findViewById(R.id.cast_control_seek_bar);
TextView start = (TextView) view.findViewById(R.id.cast_control_time_start);
TextView end = (TextView) view.findViewById(R.id.cast_control_time_end);
ImageButton playPauseButton = (ImageButton) view.findViewById(R.id.cast_control_play_pause);
ImageButton rewindButton = (ImageButton) view.findViewById(R.id.cast_control_rewind);
ImageButton forwardButton = (ImageButton) view.findViewById(R.id.cast_control_forward);
ImageButton stopButton = (ImageButton) view.findViewById(R.id.cast_control_stop);
ProgressBar loadingSpinner = (ProgressBar) view.findViewById(R.id.cast_control_loading);

如前所述,所有这些都按预期工作,但我需要监听(捕获)触摸/点击事件,以便在视频暂停或停止时,我可以保存当前观看时长以供恢复使用。

如何实现 MediaIntentReceiver 来监听这些事件?我已经尝试将点击监听器添加到各个 View ,但正如预期的那样,@Override onClick 删除了最初的预期功能。

documentation指定似乎是我需要的方法,但这是如何引用的?

我还尝试将唯一可用的监听器添加到 UIMediaController:

uiMediaController.setPostRemoteMediaClientListener(new RemoteMediaClient.Listener() {
@Override
public void onStatusUpdated() {
Log.i(TAG, "onStatusUpdated: Status Updated");
}
});

但是,这不会执行任何操作,因为 onStatusUpdated 方法不提供任何参数。

任何人都可以帮助我阐明这一点吗?几天来我一直在尝试不同的事情并进行搜索,所以是时候寻求帮助了。

谢谢!

最佳答案

您定义的接收器(通常是 MediaIntentReceiver)用于处理来自通知、锁屏和转换对话框的操作;因此,拥有一个自定义的会影响从这些地方启动时的行为。如果您使用的是 UIMediaController,那么您需要使用 onSendingRemoteMediaRequest()在用户与这些控件交互时收到通知。

关于android - 如何通过转换控制接口(interface)捕获 UIMediaController 点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38682994/

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