Intereting Posts
JNI, вызов логического метода Ссылка на класс 'Landroid / support / v4 / app / Watson; Failed – невозможно разрешить суперкласс Lcom / actionbarsherlock / app / SherlockActivity Как получить день месяца? Как программировать, когда FINGERPRINT_ERROR_LOCKOUT истек в Android FIngerprintManager? Как обойти изменения в изменении поведения макета элемента списка между sdk 17 и 18? Оправьте текст в приложении Android с помощью WebView, но представив интерфейс TextView? Google + для android (получение нулевого указателя) Android-камера 2 api BufferQueue была оставлена Как приостановить Httpurlconnection в android при нажатии кнопки Примеры презентаторов / контроллеров модели андроидов Оценочные маяки – разница между слушателями мониторинга и ранжирования Android SDK Manager не будет обновлен: подключение к https://dl-ssl.google.com отклонено ClassNotFoundException для AndroidAnnotations сгенерированных классов с момента обновления до ADT 22 Декодирование mp4 / h.264 с использованием MediaCodec без MediaExtractor, ожидаемый формат блока доступа Обрабатывать пустой ответ в JSONRequest с помощью Volley

Как очистить SurfaceTexture после использования с MediaPlayer?

Я использую ListView с детьми TextureView. TextureView использует MediaPlayer для воспроизведения видео. Когда TextureView перерабатывается, последний кадр остается на поверхности, пока следующий MediaPlayer не использует его.

Каков самый простой способ «очистить» поверхность TextureView (например, черный), чтобы старые кадры не отображались?

Solutions Collecting From Web of "Как очистить SurfaceTexture после использования с MediaPlayer?"

После того как я боролся с этим некоторое время, я придумал пару возможных решений:

A) очистить поверхность, используя GLES. Вы можете увидеть пример в Grafika (проверьте метод clearSurface ()). Я лично не поклонник этого, потому что я не думаю, что резкий переход к черному выглядит особенно хорошо, и это довольно немного технических издержек, если вы еще не используете код GL. Кроме того, это похоже на работу с API 17+.

Б) Мое выбранное решение состояло в том, чтобы просто создать новый TextureView и добавить его в соответствующее представление каждый раз, когда я захочу воспроизвести видео, вместо повторного использования старого. Я бы не стал называть это хорошим решением, но это наименее ужасное, что я мог найти.

C) Одна вещь, которую вы, возможно, сможете сделать, если снова воспроизводить одно и то же видео, – это попытаться найти первый кадр видео, когда он будет воспроизводиться. Затем в следующий раз, когда будет мигать последний кадр, он не будет виден, так как он будет тем же самым кадром, что и начало видео. У меня был некоторый успех в этом, но я не мог заставить его работать надежно на всех устройствах. Это также довольно ясно взломать.

Удачи, это было очень сложно, чтобы попытаться исправить.