2014-03-26 29 views
2

我試圖創建一個簡單的應用程序,它使用Cast伴侶庫在Chromecast上流式傳輸視頻。RemoteMediaPlayer媒體狀態爲null Cast Cast配套庫

我在做的事很簡單。 我有下面的代碼的活動:

private VideoCastManager mVideoCastManager; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     mVideoCastManager = CastHelper.getVideoCastManager(this); 
    } 

和帶有一個方法叫做CastHelper類:

private static final String APPLICATION_ID = CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID; 
    private static VideoCastManager mCastMgr; 

    public static VideoCastManager getVideoCastManager(Context ctx) 
    { 
     if (mCastMgr == null) 
     { 
      mCastMgr = VideoCastManager.initialize(ctx, APPLICATION_ID, null, null); 
      mCastMgr.enableFeatures(VideoCastManager.FEATURE_NOTIFICATION 
        | VideoCastManager.FEATURE_DEBUGGING); 
     } 
     mCastMgr.setContext(ctx); 
     return mCastMgr; 
    } 

當我啓動的應用程序,我在動作條的媒體按鈕,我可以選擇一個設備。但是,我有一個錯誤:

03-26 19:18:47.890: D/ccl_VideoCastManager(9874): Registering MediaChannel namespace 
03-26 19:18:47.900: D/ccl_VideoCastManager(9874): onApplicationStatusChanged() reached: Ready To Cast 
03-26 19:18:50.203: D/ccl_VideoCastManager(9874): RemoteMediaPlayer::onStatusUpdated() is reached 
03-26 19:18:50.203: D/ccl_VideoCastManager(9874): onRemoteMediaPlayerStatusUpdated() reached 
03-26 19:18:50.203: D/ccl_VideoCastManager(9874): mApiClient or mRemoteMediaPlayer is null, so will not proceed 

其實這個問題是塊:

if (null == mApiClient || null == mRemoteMediaPlayer || 
       null == mRemoteMediaPlayer.getMediaStatus()) { 
      LOGD(TAG, "mApiClient or mRemoteMediaPlayer is null, so will not proceed"); 
      return; 
} 

的RemoteMediaPlayer情況是好的,但getMediaStatus方法返回null。請注意,我還沒有加載媒體。

我在做什麼錯?

編輯 正如指出的阿里Naddaf,也許這代碼有什麼錯,但是當我添加VideoCastConsumerImplonApplicationConnected沒有被調用,所以我想這可能是原因。

IVideoCastConsumer mCastConsumer = new VideoCastConsumerImpl() 
     { 


      @Override 
      public void onConnected() 
      { 
       super.onConnected(); 


      } 

      @Override 
      public void onApplicationConnected(ApplicationMetadata appMetadata, String sessionId, boolean wasLaunched) 
      { 
       super.onApplicationConnected(appMetadata, sessionId, wasLaunched); 
       //Trying to load a media here, but never called 

      } 

     }; 
mVideoCastManager.addBaseCastConsumer(mCastConsumer); 

回答

1

mVideoCastManager.addBaseCastConsumer(mCastConsumer);更改爲mVideoCastManager.addVideoCastConsumer(mCastConsumer);並查看是否有幫助。

+0

這是問題。它現在有效。謝謝! – Aerilys

1

是什麼讓你覺得有什麼不對?如果尚未加載任何媒體,則媒體狀態合理無效,使用上述退出路由的方法全部是關於更新各種媒體狀態的方法,並且此時它會退出該方法,因爲在那裏實際上沒有什麼可做的。那麼你是否看到了這個問題,或者我誤解了這個問題?

+0

你說得對,也許在這裏沒有什麼錯,但是當我添加一個VideoCastConsumerImpl回調函數時,onApplicationConnected方法永遠不會被調用。我會更新我的問題來更準確地解釋。 – Aerilys