2014-03-26 1 views
2

Cast 동반자 라이브러리를 사용하여 Chromecast에서 동영상을 스트리밍하는 간단한 앱을 만들려고합니다.CastMonitor 라이브러리에서 RemoteMediaPlayer 미디어 상태가 null입니다.

내가하고있는 일은 꽤 간단합니다.

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를 돌려줍니다. 미디어를 아직로드하고 있지 않습니다.

내가 뭘 잘못하고 있니?

편집 으로 내가 onApplicationConnected가 호출되지 않은 VideoCastConsumerImpl를 추가 할 때 어쩌면이 코드는 아무 문제가 없지만, 알리 Naddaf에 의해 지적했다, 그래서 나는 이유가 될 수있다 생각했다.

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

무엇이 잘못 됐는지 생각하세요? 아직 미디어를로드하지 않은 경우 미디어 상태는 null로 적당하며 위의 이스케이프 경로를 사용하는 메서드는 모두 다양한 미디어 상태를 업데이트하는 것이므로 그 시점부터 해당 메서드를 종료합니다 실질적으로 할 일이 아니다. 그래서 당신은 그 문제를보고 있습니까, 아니면 어쩌면 제가 그 질문을 오해 한 것입니까?

+0

맞습니다. 여기에 아무 문제가 없을 수도 있지만 VideoCastConsumerImpl 콜백을 추가하면 onApplicationConnected 메서드가 호출되지 않습니다. 좀 더 정확하게 설명하기 위해 질문을 업데이트하겠습니다. – Aerilys