Как проверять сеть во время стрима

316
13 января 2017, 08:15

У меня возник вопрос относящееся к видео стриму. Например видео воспроизводится онлайн, во время воспроизведения нужно ли проверять соединение с сетью каждую секунду? Если да, то каким образом. Потому что я с запросами я работал только для того чтобы получать JSON строку. Или вообще как правильно построить структуру воспроизведения видео?

Answer 1

Вам нужен бродкаст ресивер, который будем уведомлять ваше приложение каждый раз когда состояние сети будет меняться.

public class NetworkReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
            NetworkInfo networkInfo = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            if (networkInfo != null && networkInfo.getDetailedState() == NetworkInfo.DetailedState.CONNECTED) {
                Log.d("Network", "Соединение есть");
            } else if (networkInfo != null && networkInfo.getDetailedState() == NetworkInfo.DetailedState.DISCONNECTED) {
                Log.d("Network", "Соединение оборванно");
            }
        }
    }
}

И не забываем прописать в манифесте

<receiver
    android:name=".receivers.NetworkReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>
Answer 2

Возможно, вам на самом деле нужна не информация о том, доступен или нет сервер, а информация о том, достаточно или недостаточно плееру данных для работы. Если сервер на какое-то время отвалился, но буфера хватило, то пользователю это неважно. Пользователю будет важно, если сервер доступен, но скорости не хватает.

Поищите в библиотеке плеера колбэк, который возвращает статус. Если вы используете ExoPlayer (я надеюсь, вы используете его, а не стандартный?), то в колбэк ExoPlayer.EventListener в метод onPlayerStateChanged() может вернуться статус STATE_BUFFERING, при получении которого можно показать пользователю прогресс-бар.

READ ALSO
Почему возникает исключение IndexOutOfBoundsException в AbstractListModel

Почему возникает исключение IndexOutOfBoundsException в AbstractListModel

Исключение выходит если запускаю в потоке, а без потока не появляется вроде быКак подправить чтоб без бага было

465
Спортивное программирование

Спортивное программирование

Прошу посоветовать книги по олимпиадному (школьному) программированию и вообще, что стоит учить, на данный момент читаю книгу Роберта Седжевика...

306
Закрепить блок меню

Закрепить блок меню

Есть такой код

293
Позиционирование flexbox

Позиционирование flexbox

День добрый! Есть такая html конструкция

378