Главная » Разработка для Android » Инициализация видеоданных для воспроизведения

0

Успешно создав и передав объект SurfaceHolder в Медиапроигрыватель, используйте метод setDataSource, чтобы указать  локальный адрес, URL или путь URI  Источника данных, указывающие  на ресурс с видео, которое нужно воспроизвести.

Как и в случае с проигрыванием аудиоданных, если вы указываете адрес URL к удаленному  файлу,  сервер, на котором он находится,  должен под- держивать  последовательную загрузку  с помощью протоколов  RTSP  или HTTP.

Выбрав источник с медиаданными, вызовите метод prepare, чтобы ини- циализировать объект MediaPlayer и подготовить его для воспроизведения, как показано в листинге 11.6.

Листинг 11.6. Инициализация видеоданных  для воспроизведения с помощью объекта MediaPlayer

public void surfaceCreated(SurfaceHolder holder) {

try { mediaPlayer.setDisplay(holder); mediaPlayer.setDataSource("/sdcard/test2.3gp"); mediaPlayer.prepare();

mediaPlayer.start();

} catch (IllegalArgumentException e) { Log.d("MEDIA_PLAYER", e.getMessage());

} catch (IllegalStateException e) { Log.d("MEDIA_PLAYER", e.getMessage());

} catch (IOException e) {

Log.d("MEDIA_PLAYER", e.getMessage());

}

}

ВНИМАНИЕ

В отличие от ресурсов с аудиоданными, Android не поддерживает про- игрывание видео, включенного в проект в качестве ресурса. Вы не мо- жете также использовать статический метод create для упрощенного создания объекта MediaPlayer и путь URI, ссылающийся на локальный файл с помощью схемы file://.

Управление воспроизведением

Подготовив Медиапроигрыватель, вызовите метод start, чтобы начать вос- произведение соответствующих мультимедийных данных:

mediaPlayer.start();

Используйте методы stop и pause, чтобы остановить или приостановить проигрывание.

Объект MediaPlayer также предоставляет методы getDuration (позволяет получить длину воспроизводимого аудио или видео) и getCurrentPosition (возвращает текущую позицию). Чтобы перейти к определенной  позиции, воспользуйтесь методом seekTo, как показано в листинге 11.7.

Листинг 11.7. Управление воспроизведением

mediaPlayer.start();

int pos = mediaPlayer.getCurrentPosition();

int duration = mediaPlayer.getDuration(); mediaPlayer.seekTo(pos + (duration-pos)/10); [ … ждем перехода к позиции . . . ] mediaPlayer.stop();

Управление мультимедийным выводом при воспроизведении

Медиапроигрыватель предоставляет управление  громкостью,  запрет от- ключения подсветки экрана во время воспроизведения, а также возможность проигрывать файлы в режиме повторения.

В настоящее  время нельзя  воспроизводить аудиоданные  одновремен- но с разговором  по телефону.  Медиапроигрыватель всегда использует  стан- дартное устройство для вывода звука — динамик или подключенную по Bluetooth гарнитуру.

Используйте методы isLooping и setLooping,  чтобы определить,  будет ли файл воспроизводиться в режиме повторения.

if (!mediaPlayer.isLooping())

mediaPlayer.setLooping(true);

Чтобы подсветка экрана автоматически не отключалась при воспроизве- дении, применяйте метод setScreenOnWhilePlaying. Он предпочтительнее, чем установка запрета на отключение вручную, поскольку не требует допол- нительных полномочий. Этот механизм более подробно описан в главе 15.

mediaPlayer.setScreenOnWhilePlaying(true);

Во время воспроизведения с помощью метода setVolume можно управлять громкостью каждого аудиоканала. В качестве параметров этот метод прини- мает скалярные значения  с плавающей точкой в диапазоне между 0 и 1 для обоих каналов (где 0 — полная тишина, а 1 — максимальная громкость).

mediaPlayer.setVolume(1f, 0.5f);

ПРИМЕЧАНИЕ

При воспроизведении видеоресурсов вы можете использовать метод getFrame, чтобы получить заданный кадр.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии