2017-01-22 2 views
0

У меня есть приложение для Android, использующее CastCompanionLibrary v2.9.1, измененное для использования play-services-cast:10.0.1 (простое изменение зависимостей градиента).Android-приложение автоматически запускается без взаимодействия с пользователем (CastCompanionLibrary)

Краткая версия: приложение пытается автоматически подключиться к устройству ChromeCast без взаимодействия с пользователем.

Длинная версия:

С обновлением библиотеки CCL использовать play services 10.0.1, у меня было несколько пользователей упомянуть, что приложение автоматического подключения/приведение к CHROMECAST без взаимодействия с пользователем.

Некоторые пользователи заявили, что не используют приложение, затем подключаются к Wi-Fi, и приложение автоматически пытается выполнить бросок. Другие говорят, что они используют приложение, они не нажимают кнопку ChromeCast, и приложение начинает кастинг.

-

У меня возникли проблемы выяснить, где искать потенциальные изменения в CHROMECAST API, которые могли бы объяснить, что происходит. Я также не уверен, что эта проблема возникает только для моего приложения или для многих других приложений, поддерживающих ChromeCast. Наконец, я не могу воспроизвести эту проблему на своем собственном устройстве ChromeCast.

Любая помощь будет оценена по достоинству.

ответ

2

Я не видел и не слышал этого раньше, поэтому вот несколько указателей для вас, чтобы провести дальнейшие расследования, чтобы узнать, что может быть причиной. CCL имеет (липкую) услугу под названием ReconnectionService, которая отвечает за выполнение попыток повторного соединения, когда вы теряете Wi-Fi и позже получаете его обратно. Сценарий wifi, о котором вы упоминали, напоминает это, поэтому я предлагаю начать с этого момента. Чтобы только повторно подключиться, когда это имеет смысл, он получает длину времени воспроизводимого контента и делает только такие попытки за этот период времени; т.е. если вы начинаете играть контент, который находится в течение 1 часа, а затем вы оставляете свой телефон на столе и забираете его через 2 часа, он замечает, что последний фильм перед тем, как он упал спать, был на 1 час, поэтому он не сделает никаких попытайтесь снова подключиться (см. handleTermination() в том же классе). Для прямого потока, который не имеет четкой продолжительности контента, CCL использует значение по умолчанию 2 часа, но позволяет приложениям изменять это, вызывая метод VideoCastManager.setLiveStreamDuration(duration_in_seconds). Наконец, полное пересоединение опирается на несколько факторов: оно сохраняет идентификатор маршрута последнего соединения вместе с идентификатором сеанса. Поэтому, если необходимо, вы можете очистить любой из них, а затем он не будет пытаться повторно подключиться для этой конкретной сессии (в случае, если вы хотите продолжить переподключение для некоторых и отключить какой-либо другой). Надеюсь, что это поможет устранить проблему.

+0

Спасибо за подробный ответ. «Повторное соединение», вероятно, является ключевым словом, которое я отсутствовал - ни один из отчетов пользователей не упоминал, были ли они недавно кастинг, но, предположительно, они были. 'setLiveStreamDuration' звучит очень многообещающе. Я посмотрю и отчитаю. –

+0

Я установил 'liveStreamDuration' до 2 минут (это музыкальный плеер, не особенно важный, если он не переподключается). Я также установил '.disableLaunchOnConnect()' в объект 'CastConfiguration.Builder'. Интересно, объясняет ли этот флаг неожиданный запуск приложения при подключении к WiFi.Теперь вытащить сборку, поэтому я получаю отклик в течение нескольких дней. –

+1

Я не знаю, как ваше приложение и его поток, но вызов disableLaunchOnConnect() может быть неправильным; это означает, что когда пользователь инициирует трансляцию и выбирает литое устройство, ваше приложение подключается к приложенному устройству, но ваше приложение-получатель не будет запущено. Я сомневаюсь, что это то, что вы хотите. –

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