私のアプリでは、完全に機能するカスタムキャスト送信者を作成しました。追加する必要があるのは、 '再生/一時停止'と 'スキップ'ボタンが、(私の知る限りを検索することができましたとして)いずれかの手がかりを与えるものではありません、とAdvanced Cast Features Docsに示す機能を追加した後、Googleのドキュメントは動作しませんでした:キャストコントロールインターフェイスを使用してUIMediaControllerのクリックをキャプチャする方法
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
およびマニフェストで参照されている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
}
ログ印刷が機能しているが、オーバーライドメソッドが呼び出されていない(ログ印刷されていない)ため、受信側が機能しています。ここで
は私の実装にいくつかの追加の詳細は、以下のとおりです。
すべてのキャスト機能はMainActivityビュー(同様ののベースに追加された二つの別々のクラス、CastManager(コントローラ)とCastControlsフラグメント(ビュー)でありますYouTubeへ)。これらの2つのクラスの間に物事を引き起こすインターフェースもあります。 CastManager、IセットアップUIMediaController
で
とビューバインド:前に述べたように、彼らは必要がありますが、私は(キャプチャ)をリッスンする必要があるとして、これらすべての作業を
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
これらのイベントを受信するにはどうすれば実装できますか?個々のビューにクリックリスナーを追加しようとしましたが、期待どおり、@Override onClick
は初期の意図された機能を削除します。
documentationは、私が必要とする方法を指定しますが、これはどのように参照されますか?
私もUIMediaController
に利用できる唯一のリスナーを追加してみました:onStatusUpdated
メソッドは、引数を与えないよう
uiMediaController.setPostRemoteMediaClientListener(new RemoteMediaClient.Listener() {
@Override
public void onStatusUpdated() {
Log.i(TAG, "onStatusUpdated: Status Updated");
}
});
これは、しかし、何もしません。
誰も私にこれにいくつかの光を当てることができますか?私はいろいろなことをしようとしていて、今数日は探しているので、助けを求める時間です。
ありがとうございます!
ご返信ありがとうございます。これを実装しましたが、実際には動作していますが、onStatusUpdatedメソッドには引数がありません。どのボタン(実際に使用されている3つのボタン)が実際にクリックされたかはどのようにわかりますか? – mwieczorek