0

VideoCastManagerキャストから切断する前に、現在再生中のメディアを取得することはできますか?

ユーザーがキャストから手動で切断したときに、現在のメディアの最後の進行状況を保存したいと考えています。VideoCastCosumerメソッドを使用onDisconnected()しましたが、例外がスローされます。私のログにはこれしか表示されないため、どのような例外があるのか​​ わかりません:

System.err: at com.economist.newton.mobile.ui.activity.BaseCastActivity$1.onDisconnected (MyCastActivity.java:81)

onDisconnected()この行には、メソッド内に次の行が含まれています。

try {
      if(castManager.getCurrentMediaPosition() > 30000){ //  <-here error occurs
              ...
      }
} catch (TransientNetworkDisconnectionException | NoConnectionException e) {
      e.printStackTrace();
}

助けがあれば、castManager変数は次のように宣言されていonCreate()ます:

castManager = VideoCastManager.getInstance();

キャスト コンパニオン ライブラリ:com.google.android.libraries.cast.companionlibrary:ccl:2.8.4

4

3 に答える 3

1

それにはいくつかの方法があります。最も簡単だと思うのは、ProgressWatcher(CCL から) を実装するコンポーネントを用意することです。そのリスナーでsetProgress(int currentPosition, int duration)は、毎秒呼び出され、最初の引数としてストリームの currentPosition を持ちます。この値をキャッシュできます (デバイスが切断された場合は更新されません)。これにより、現在の位置に関するリアルタイムの情報が提供されます。たとえば、アクティビティがこのインターフェースを実装する場合:

public MyActivity extends AppCompatActivity implements ProgressWatcher {
   private int mCurrentStreamPosition;

   public onStart() {
       ....
       mCastManager.addProgressWatcher(this);
       ....
   }

   public onStop() {
       ....
       mCastManager.removeProgressWatcher(this);
       ....
   }

   public setProgress(int currentTime, int duration) {
       mCurrentStreamPosition = currentTime;
   }

   public int getCurrentStreamPosition() {
       return mCurrentStreamPosition;
   }
   ....
}

そのため、いつでも getCurrentStreamPosition() を呼び出して (たとえば、 で呼び出すことができますonDisconnected())、最後/現在のストリーム位置を取得できます。アプリの構造によっては、/または/ProgressWatcherで登録/登録解除することを決定できることに注意してください。重要なことは、メモリリークを避けるために登録を解除することです。onResume()onPause()onCreate()onDestroy()

于 2016-08-12T07:03:15.033 に答える