2016-07-31 10 views
6

私のアプリでは、完全に機能するカスタムキャスト送信者を作成しました。追加する必要があるのは、 '再生/一時停止'と 'スキップ'ボタンが、(私の知る限りを検索することができましたとして)いずれかの手がかりを与えるものではありません、と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"); 
    } 
}); 

これは、しかし、何もしません。

誰も私にこれにいくつかの光を当てることができますか?私はいろいろなことをしようとしていて、今数日は探しているので、助けを求める時間です。

ありがとうございます!

答えて

3

定義したレシーバー(一般にはMediaIntentReceiver)は、通知、ロックスクリーン、キャストダイアログからのアクションを処理するために使用されます。そのような場所から開始されたときには、カスタム動作が動作に影響します。 UIMediaControllerを使用している場合、ユーザがこれらのコントロールとやりとりするときに通知されるには、onSendingRemoteMediaRequest()を使用する必要があります。

+0

ご返信ありがとうございます。これを実装しましたが、実際には動作していますが、onStatusUpdatedメソッドには引数がありません。どのボタン(実際に使用されている3つのボタン)が実際にクリックされたかはどのようにわかりますか? – mwieczorek

関連する問題