Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основные возможности

Обсуждение уроков
Vitorrio
Сообщения: 1
Зарегистрирован: 24 авг 2013, 18:35

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение Vitorrio » 27 авг 2013, 13:18

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

На данный момент реализация такова, создаю два MediaPlayer, в один отправляю первый файл, в другой второй файл, и просто изменяю баланс.

А как это сделать через один MediaPlayer ?
И как залезть внутрь библиотекИ?

nunuchek
Сообщения: 6
Зарегистрирован: 27 мар 2013, 14:23

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение nunuchek » 27 авг 2013, 15:55

Привет, помогите плиз.

Код:

Код: Выделить всё

	mPlayer = new MediaPlayer();
	mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
           try {
			mPlayer.setDataSource(link);
		} catch (IllegalArgumentException e) {
			Log.d(tag, "You might not set the URI correctly!");
		} catch (SecurityException e) {
			Log.d(tag, "You might not set the URI correctly!");
		} catch (IllegalStateException e) {
			Log.d(tag, "You might not set the URI correctly!");
		} catch (IOException e) {
			e.printStackTrace();
		}

mPlayer.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
			
			public void onBufferingUpdate(MediaPlayer mp, int percent) {
				Log.d(tag," percent ="+percent);
				if (percent != 100){
					textView1.setText("Загрузка "+percent+"%");
				}else{
					textView1.setText("Готово");
				}
					
				}
			}
		});

int i = 0;
btnPlayandPause.setOnClickListener(new OnClickListener() {
				boolean prepare = true;
				public void onClick(View v) {
					if (prepare){
					try {
						mPlayer.prepare();
						prepare = false;
						
					} catch (IllegalStateException e) {
						Log.d(tag, "You might not set the URI correctly!");
					} catch (IOException e) {
						Log.d(tag, "You might not set the URI correctly!");
					}
					}
					
					
					if (mPlayer != null && i == 0) {

						mPlayer.start();
						i = 1;
						btnPlayandPause.setText("Pause");
						seek.setMax(mPlayer.getDuration());
						timeline = mPlayer.getDuration();
						seek.setProgress(mPlayer.getCurrentPosition());
						try {
							currentThread.start();
						} catch (Exception er) {

						}
					} else {
						if (mPlayer != null && mPlayer.isPlaying()) {
							
							mPlayer.pause();
							
							
						}
						btnPlayandPause.setText("Play");
						i = 0;

					}

				}
			});
Т.е после нажатия кнопки Play
1. подготавливается запись и сразуже воспроизводится запись
2. во время буфиризации отображаются проценты загрузки

Как при завершении буфиризации скачать файл из буфера и сохранить его на SD (нажав на кнопку "Загрузить")?

nunuchek
Сообщения: 6
Зарегистрирован: 27 мар 2013, 14:23

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение nunuchek » 28 авг 2013, 11:35

Как остановить процесс prepare() т.к. постоянно кидает в лог:

Код: Выделить всё

08-28 11:30:09.519: V/MediaPlayer(19539): message received msg=3, ext1=100, ext2=0
08-28 11:30:09.519: V/MediaPlayer(19539): buffering 100
08-28 11:30:09.519: V/MediaPlayer(19539): callback application
08-28 11:30:09.519: V/MediaPlayer(19539): back from callback

08-28 11:30:10.519: V/MediaPlayer(19539): message received msg=3, ext1=100, ext2=0
08-28 11:30:10.519: V/MediaPlayer(19539): buffering 100
08-28 11:30:10.519: V/MediaPlayer(19539): callback application
08-28 11:30:10.519: V/MediaPlayer(19539): back from callback

08-28 11:30:11.519: V/MediaPlayer(19539): message received msg=3, ext1=100, ext2=0
08-28 11:30:11.519: V/MediaPlayer(19539): buffering 100
08-28 11:30:11.519: V/MediaPlayer(19539): callback application
08-28 11:30:11.519: V/MediaPlayer(19539): back from callback
Или это нужно останавливать onBufferingUpdate() то как его остановить? Или вообще забить на этом?))

Kruler
Сообщения: 28
Зарегистрирован: 27 авг 2013, 13:02

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение Kruler » 12 сен 2013, 19:32

пол вечера пытался понять, из-за чего вылетает ошибка
MediaPlayer("цифры"): Unable to to create media player
но увы так и не понял, гугл ничего не говорит
проигрывание медиа работает только из RAW, в манифесте права написаны.
вылетает на китайском планшете с андроид 4.2, на htc vision с aosp 4.2.2 все работает хорошо.

SPAWN
Сообщения: 20
Зарегистрирован: 11 мар 2013, 21:59

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение SPAWN » 02 окт 2013, 01:00

Подскажите, как расширить список воспроизводимых форматов как аудио так и видео?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение klblk » 02 окт 2013, 05:46

SPAWN писал(а):Подскажите, как расширить список воспроизводимых форматов как аудио так и видео?
вероятно подключать сторонние библиотеки, вероятно нативные (можно посмотреть в сторону библиотеки vlc например), вероятно есть методы и попроще...=)

SPAWN
Сообщения: 20
Зарегистрирован: 11 мар 2013, 21:59

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение SPAWN » 14 окт 2013, 13:18

klblk писал(а):
SPAWN писал(а):Подскажите, как расширить список воспроизводимых форматов как аудио так и видео?
вероятно подключать сторонние библиотеки, вероятно нативные (можно посмотреть в сторону библиотеки vlc например), вероятно есть методы и попроще...=)
Может быть у Вас есть пример их использования или ссылка на ресурс?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение klblk » 14 окт 2013, 13:56

SPAWN писал(а):Может быть у Вас есть пример их использования или ссылка на ресурс?
Сам я их никогда не использовал, но есть приложения которые используют библиотеку vlc.
Тут есть инструкция по сборке на Android: https://wiki.videolan.org/AndroidCompile/
Но желательно иметь опыт работы с NDK.

goldirus
Сообщения: 1
Зарегистрирован: 29 сен 2013, 20:26
Откуда: Кизляр

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение goldirus » 14 окт 2013, 16:28

подскажите пожалуйста как считать состояние кнопки гарнитуры? в инете этого не нашол. хочу с помощью нее упровлять проигрователем

mercuriy94
Сообщения: 16
Зарегистрирован: 02 апр 2013, 22:44

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение mercuriy94 » 17 окт 2013, 14:18

goldirus писал(а):подскажите пожалуйста как считать состояние кнопки гарнитуры? в инете этого не нашол. хочу с помощью нее упровлять проигрователем
Добавляем этот сниппет в нашу activity и наше приложение для android сможет обрабатывать нажатия hardware-кнопок так как мы того пожелаем. В данном примере используется обработчик для нажатия кнопки “вызова” (KeyEvent.KEYCODE_HEADSETHOOK) на handsfree гарнитуре.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
super.onKeyUp(keyCode, event);
if (keyCode == KeyEvent.KEYCODE_HEADSETHOOK)
{
// ADD HERE YOUR CODE TO PROCESS PARTICULAR KEY-PRESS EVENT
return true; //because you handle this event
}
return false; // allow to system handle it
}
Если вы не знаете кода кнопки для которой хотите написать обработчик – переопределите функцию onKeyDown таким образом чтобы она выводила код нажатой кнопки и всегда возвращала false:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
super.onKeyUp(keyCode, event);
Log.i("KEY CODE ","PRESSED KEY - "+keyCode);
return false; // allow to system handle it
}

mercuriy94
Сообщения: 16
Зарегистрирован: 02 апр 2013, 22:44

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение mercuriy94 » 17 окт 2013, 14:20

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

nunuchek
Сообщения: 6
Зарегистрирован: 27 мар 2013, 14:23

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение nunuchek » 18 окт 2013, 20:29

Подскажите как изменить в ID3v2 тег LINK INFORMATION
Я нашел то как изменять другие теги http://jid3.blinkenlights.org/samples.html, но вот как изменить этот не знаю
Вложения
18-10-2013 20-16-05.png
18-10-2013 20-16-05.png (64.79 КБ) 15835 просмотров

SPAWN
Сообщения: 20
Зарегистрирован: 11 мар 2013, 21:59

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение SPAWN » 25 окт 2013, 11:31

SPAWN писал(а):Подскажите, как расширить список воспроизводимых форматов как аудио так и видео?
Форумчане помогите с решением. Очень надо. Нужно на Андроид 2.2 воспроизвести flac. Нашел библиотеку jflac, но нету мануала по ней=(

Аватара пользователя
Arssir
Сообщения: 38
Зарегистрирован: 09 июн 2013, 15:22
Откуда: Москва

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение Arssir » 27 окт 2013, 06:02

У меня в приложении играет музыка, я сделал так что при выходе и сворачивании, музыка приостанавливается (методы onPause(), onStop(), onResume()). Но не могу понять как остановить музыку при блокировки экрана. Какой метод за это должен отвечать?

Аватара пользователя
IgNa
Сообщения: 345
Зарегистрирован: 30 сен 2013, 12:18

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение IgNa » 10 ноя 2013, 03:02

Из верхнего ряда кнопок только raw издает звук ?

А что надо добавить в код что бы проиграть файл с sd карты
потому что вот этот код ничего не даЁт
case R.id.btnStartSD:
Log.d(LOG_TAG, "start SD");
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(DATA_SD);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepare();
mediaPlayer.start();
break;
Изображение

Ave23
Сообщения: 2
Зарегистрирован: 28 ноя 2013, 22:59

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение Ave23 » 28 ноя 2013, 23:03

IgNa писал(а):Из верхнего ряда кнопок только raw издает звук ?

А что надо добавить в код что бы проиграть файл с sd карты
потому что вот этот код ничего не даЁт
case R.id.btnStartSD:
Log.d(LOG_TAG, "start SD");
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(DATA_SD);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepare();
mediaPlayer.start();
break;
ну чтобы какой-то один файл проиграть надо изменить в mediaPlayer.setDataSource(DATA_SD); в скобках вместо DATA_SD написать "mnt/sdcard/название_композиции.mp3"
а вот как например проиграть папку с музыкой подскажите кто знает??

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение klblk » 03 дек 2013, 04:06

Ave23 писал(а):а вот как например проиграть папку с музыкой подскажите кто знает??
1) Получаем список файлов из папки:
[syntax=java]File dir = new File(DATA_SD);
File[] files = dir.listFiles();[/syntax]
2) Прогоняем их через фильтр какой-нить, чтобы оставить только медиа файлы
3) В mediaPlayer закидываем первый файл, затем в onCompletion ловим завершение проигрывания и закидываем следующий и т.д.

думаю как-то так.

Ave23
Сообщения: 2
Зарегистрирован: 28 ноя 2013, 22:59

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение Ave23 » 04 дек 2013, 22:32

klblk писал(а):
Ave23 писал(а):а вот как например проиграть папку с музыкой подскажите кто знает??
1) Получаем список файлов из папки:
[syntax=java]File dir = new File(DATA_SD);
File[] files = dir.listFiles();[/syntax]
2) Прогоняем их через фильтр какой-нить, чтобы оставить только медиа файлы
3) В mediaPlayer закидываем первый файл, затем в onCompletion ловим завершение проигрывания и закидываем следующий и т.д.

думаю как-то так.
честно говоря, не очень понял, а скажите рациональна ли идея считать названия всех композиций из папки на sdcard в массив string и потом в код mediaPlayer.setDataSource("mnt/sdcard/music.mp3"); подставлять элемент массива. Хотя я не знаю как считать все названия из папки))

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение klblk » 06 дек 2013, 05:13

Ave23 писал(а):честно говоря, не очень понял, а скажите рациональна ли идея считать названия всех композиций из папки на sdcard в массив string и потом в код mediaPlayer.setDataSource("mnt/sdcard/music.mp3"); подставлять элемент массива. Хотя я не знаю как считать все названия из папки))
ну так я это и имел ввиду только не массив строк, а массив File (код получения в сообщении выше, DATA_SD - путь к нужной папке), из которого можно получить и путь к файлу (mFile.getPath()). А вот насколько это рационально не знаю, но я бы сделал так, т.к. другой способ на ум не приходит.

SPAWN
Сообщения: 20
Зарегистрирован: 11 мар 2013, 21:59

Re: Урок 126. Медиа. MediaPlayer – аудио/видео плеер, основн

Сообщение SPAWN » 09 дек 2013, 17:49

Форумчане, подскажите как сохранить воспроизводимое видео с сайта (не поток). Я понимаю, что оно кешируется и определенное время находиться на устройстве, но как его сохранить для повторного воспроизведения?

Ответить