Вы можете ознакомиться с рекомендациями по настройке/уничтожению Chromecast (например, при смене ориентации) на странице https://developers.google.com/cast/docs/android_sender
Соответствующие разделы кода следующие:
@Override
protected void onResume() {
super.onResume();
mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback,
MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
}
@Override
protected void onPause() {
if (isFinishing()) {
mMediaRouter.removeCallback(mMediaRouterCallback);
}
super.onPause();
}
А также следующий код:
@Override
protected void onStart() {
super.onStart();
mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback,
MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
}
@Override
protected void onStop() {
mMediaRouter.removeCallback(mMediaRouterCallback);
super.onStop();
}
Также рекомендуется иметь логическое значение в вашей программе, например, «wasLaunched» или «isConnected», чтобы отслеживать, активно ли подключение к chromecast или нет. Я использую эту переменную в своем коде, чтобы проверить, могу ли я отправлять сообщения получателю или нет. Затем просто не забудьте сохранить эту переменную и восстановить ее при изменении ориентации устройства. Это работает для меня в моем приложении с поддержкой Chromecast. Ниже показан код для сохранения/восстановления моей переменной, чтобы она учитывала изменение ориентации:
protected void onSaveInstanceState(Bundle bundle) {
if (bundle!=null)
{
bundle.putBoolean("wasLaunched", wasLaunched);
}
super.onSaveInstanceState(bundle);
}
protected void onRestoreInstanceState(Bundle savedInstanceState) {
if (savedInstanceState!=null)
{
wasLaunched = savedInstanceState.getBoolean("wasLaunched");
}
super.onRestoreInstanceState(savedInstanceState);
};
Конечно, вы также можете поместить в свой пакет другие вещи, которые должны пережить изменение ориентации. Я не использую описанное вами переопределение onDestroy и не упоминается в документации Google, на которую я ссылаюсь. Но я использую метод teardown(), описанный в этом документе, на который я ссылаюсь, для очистки, но это происходит только тогда, когда я закрываю соединение, потому что я не хочу закрывать соединение с chromecast при изменении ориентации.
person
zaifrun
schedule
21.09.2014