我已经在我的应用程序中构建了一个自定义 Actor 发送器,可以完美运行-我需要添加的唯一功能是一种监听“播放/暂停”和“跳过”按钮的方法,但是Google的文档(据我所知)能够搜索)没有任何线索,并且添加了o​​jit_a中显示的功能后不起作用:

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,它扩展了MediaIntentReceiver和 list 中引用的CastOptionsProvider
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

}

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

以下是有关我的实现的其他一些详细信息:

所有转换功能都位于两个单独的类中,分别是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删除了最初的预期功能。

Advanced Cast Features Docs指定似乎是我需要的方法,但是如何引用呢?

我还尝试将唯一可用的监听器添加到UIMediaController:
uiMediaController.setPostRemoteMediaClientListener(new RemoteMediaClient.Listener() {
    @Override
    public void onStatusUpdated() {
        Log.i(TAG, "onStatusUpdated: Status Updated");
    }
});

但是,此操作无济于事,因为onStatusUpdated方法不提供任何参数。

任何人都可以帮助我对此有所了解吗?我一直在尝试不同的事情,现在已经搜索了几天,所以有时间寻求帮助。

谢谢!

最佳答案

您定义的接收器(通常是MediaIntentReceiver)用于处理通知,锁屏和转换对话框中的操作;因此,拥有自定义名称会影响从这些位置启动该行为时的行为。如果您使用的是UIMediaController,则当用户与这些控件进行交互时,需要使用onSendingRemoteMediaRequest()来得到通知。

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

10-10 20:17