2015-01-21 3 views
1

Когда я подключаюсь к устройству CC в форме приложения Sender, часто пользовательский приемник не запускается должным образом.Пользовательский приемник не запускается правильно

Он будет загружен, но никогда не будет в состоянии готовности.

Вот выход LogCat:

01-21 14:16:09.603 19396-19396/com.example.chromecast D/PlayActivity onRouteSelected 
01-21 14:16:16.913 19396-19396/com.example.chromecast D/PlayActivity onConnected 
01-21 14:16:16.953 19396-19396/com.example.chromecast D/ccl_BaseCastManager﹕ [v1.11] onConnected() reached with prior suspension: false 
01-21 14:16:16.953 19396-19396/com.example.chromecast D/ccl_BaseCastManager﹕ [v1.11] launchApp() is called 
01-21 14:16:16.953 19396-19396/com.example.chromecast D/ccl_BaseCastManager﹕ [v1.11] Launching app 
01-21 14:16:17.003 19396-19396/com.example.chromecast D/ccl_DataCastManager﹕ [v1.11] onApplicationStatusChanged() reached: 
01-21 14:16:19.513 19396-19396/com.example.chromecast D/ccl_DataCastManager﹕ [v1.11] onApplicationStatusChanged() reached: null 
01-21 14:16:20.633 19396-19396/com.example.chromecast D/ccl_BaseCastManager﹕ [v1.11] launchApplication() -> failure result 
01-21 14:16:20.633 19396-19396/com.example.chromecast D/ccl_BaseCastManager﹕ [v1.11] disconnectDevice(true,false) 
01-21 14:16:20.633 19396-19396/com.example.chromecast D/ccl_BaseCastManager﹕ [v1.11] mConnectionSuspended: false 
01-21 14:16:20.633 19396-19396/com.example.chromecast D/ccl_BaseCastManager﹕ [v1.11] clearPersistedConnectionInfo(): Clearing persisted data for 0 
01-21 14:16:20.653 19396-19396/com.example.chromecast D/ccl_BaseCastManager﹕ [v1.11] onDisconnected() reached 
01-21 14:16:20.653 19396-19396/com.example.chromecast D/ccl_BaseCastManager﹕ [v1.11] Trying to disconnect 
01-21 14:16:37.295 19396-19396/com.example.chromecast D/PlayActivity ApplicationConnectionResultCallback.onResult: statusCode15 
01-21 14:16:37.295 19396-19396/com.example.chromecast E/PlayActivity application could not launch 
01-21 14:16:37.295 19396-19396/com.example.chromecast D/PlayActivity teardown 

Если я отключаю в мое приложение отправителя, а затем повторно подключить, приемник будет получать в готовом состоянии, и я могу бросить свое содержание.

Что может вызывать такое поведение? (Это происходит чаще, чем нет, и очень fustrating!)

Некоторый код:

(Media Route инициализации) Кнопка

mMediaRouter = MediaRouter.getInstance(getApplicationContext()); 
    mMediaRouteSelector = new MediaRouteSelector.Builder() 
      .addControlCategory(
        CastMediaControlIntent.categoryForCast(getResources() 
          .getString(R.string.app_id))).build(); 
    mMediaRouterCallback = new MyMediaRouterCallback(); 

    mDataCastManager = DataCastManager.initialize(this, getResources().getString(R.string.app_id), getResources().getString(R.string.namespace)); 
    mDataCastManager.reconnectSessionIfPossible(this, true, 20); 

Медиа Маршрут

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item); 
    MediaRouteActionProvider mediaRouteActionProvider = (MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteMenuItem); 
    mediaRouteActionProvider.setRouteSelector(mMediaRouteSelector); 

    return super.onCreateOptionsMenu(menu); 
} 

Callbacks

private class MyMediaRouterCallback extends MediaRouter.Callback { 

    @Override 
    public void onRouteSelected(MediaRouter router, MediaRouter.RouteInfo info) { 
     Log.d(TAG, "onRouteSelected"); 
     // Handle the user route selection. 
     mSelectedDevice = CastDevice.getFromBundle(info.getExtras()); 

     launchReceiver(); 
    } 

    @Override 
    public void onRouteUnselected(MediaRouter router, MediaRouter.RouteInfo info) { 
     Log.d(TAG, "onRouteUnselected: info=" + info); 
     teardown(); 
     mSelectedDevice = null; 
    } 
} 

Как вы можете видеть, большая часть моей реализации взята из приложения для образцов Android CastHelloText. Я добавил в библиотеку CCL, чтобы упростить управление сеансом, но я думаю, что это вызывает проблему.

Замечание DataCastManager, кажется, дает гораздо лучшие результаты при подключении устройства CC для кастинга.

+0

Как насчет кода? –

ответ

0

Если вы используете CCL, прекратите управлять кнопкой медиа-маршрутизатора, прямыми обратными вызовами с медиа-маршрутизатора, запуска приемника и т. Д., Так как они обрабатываются CCL. Если вы хотите сделать это сами, прекратите использовать CCL; вы в настоящее время смешиваете две разные вещи неправильно. Чтение документов в CCL может оказаться полезным.

+0

Хорошо, было бы здорово, если бы документация не ограничивалась исключительно аспектом видеосъемки. Я не знал, что должен либо использовать CCL, либо нет. Я ошибочно предположил, что могу просто использовать его части. Не могли бы вы привести примерный код того, как я должен использовать CCL вместо стандартной реализации Cast SDK по умолчанию? –

+0

Если бы вы прочитали документацию, вы бы заметили, что она также говорит о DataCastManager (так что речь идет не только о видео-литье). У меня нет образца для использования DataCastManager. –

+0

Я специально ищу образец DataCastManager. –

Смежные вопросы