在断开连接之前获取媒体当前位置

时间:2016-08-11 12:36:47

标签: android google-cast castcompanionlibrary

在与演员表断开连接之前,是否可以从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

3 个答案:

答案 0 :(得分: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()。重要的是确保取消注册以避免泄漏内存。

答案 1 :(得分:0)

对于Castv3,您可以从onSessionEnding覆盖SessionManagerListener并获取mRemoteMediaClient.getMediaStatus().getStreamPosition()

答案 2 :(得分:0)

打电话给name = input("enter name:")对我不起作用,但是import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots() ax.plot(np.random.rand(10)) def onclick(event): print('%s click: button=%d, x=%d, y=%d, xdata=%f, ydata=%f' % ('double' if event.dblclick else 'single', event.button, event.x, event.y, event.xdata, event.ydata)) name = input("enter name:") cid = fig.canvas.mpl_connect('button_press_event', onclick) plt.show() fig.canvas.mpl_disconnect(cid) 很好。