Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
weeeeeez
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 3
#1

MediaPlayer выбор из Raw ? - Android

10.08.2013, 18:58. Просмотров 1143. Ответов 1
Метки нет (Все метки)

Можно ли в MediaPlayer предоставить пользователю возможность выбрать треки из raw , как это сделать? или сделать возможность копировать музыку в отдельный каталог на SD ?
Также может ктото знает как сделать чтоб музыка не прекращалась при переходе между окнами и проигрывалось несколько треков одновременно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2013, 18:58     MediaPlayer выбор из Raw ?
Посмотрите здесь:

Android Простой MediaPlayer
MediaPlayer, проигрывание музыки Android
Android SoundPool vs MediaPlayer
MediaPlayer R.raw: Сделать функцию в которой передавалось бы название песни и она воспроизводилась Android
Android Не удается создать mediaplayer
Android MediaPlayer автореверс
MediaPlayer.OnCompletionListener ошибка Android
Android Static MediaPlayer
Android Ошибка MediaPlayer'a
MediaPlayer задать громкость Android
Вылет приложения с MediaPlayer Android
Android Регистрация MediaPlayer

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wenceslaus
Android Developer
130 / 130 / 4
Регистрация: 05.07.2013
Сообщений: 205
12.08.2013, 13:42     MediaPlayer выбор из Raw ? #2
Цитата Сообщение от weeeeeez Посмотреть сообщение
Можно ли в MediaPlayer предоставить пользователю возможность выбрать треки из raw , как это сделать?
Если вопрос в том, как проигрывать трек из raw, то:
Java
1
2
MediaPlayer mPlayer = MediaPlayer.create(MyActivity.this, R.raw.mysoundfile);
mPlayer.start();
Если в том, как показать список треков, то:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public void getRawFiles(){
    Field[] fields = R.raw.class.getFields();
    // перебираем массив файлов
    for(int count=0; count < fields.length; count++){
 
        int rid = fields[count].getInt(fields[count]);
 
        // получаем название файла
        String filename = fields[count].getName();
 
        // добавляем файл в список, который в дальнейшем будет виден пользователю
    }
}
Цитата Сообщение от weeeeeez Посмотреть сообщение
или сделать возможность копировать музыку в отдельный каталог на SD ?
Это тоже можно:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
InputStream in = getResources().openRawResource(R.raw.mysoundfile);
FileOutputStream out = new FileOutputStream(filePathOnSdCard); // filePathOnSdCard - путь, куда будет сохранён файл
byte[] buff = new byte[1024];
int read = 0;
 
try {
    while ((read = in.read(buff)) > 0) {
        out.write(buff, 0, read);
    }
} finally {
    in.close();
 
    out.close();
}
Цитата Сообщение от weeeeeez Посмотреть сообщение
Также может ктото знает как сделать чтоб музыка не прекращалась при переходе между окнами
Для этого используют Service (пример) или AsyncTask (пример)
Цитата Сообщение от weeeeeez Посмотреть сообщение
и проигрывалось несколько треков одновременно?
Одновременно или по очереди? Если одновременно - создайте несколько экземпляров MediaPlayer'а с разными треками и запустите их одновременно.
Если по очереди (последовательно), то создайте список треков и перебирая их поштучно воспроизводите, добавив OnCompletionListener (слушатель события завершения проигрывания трека) к MediaPlayer'у:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    public void onCompletion(MediaPlayer mp) {
        mp.reset();
        currentSong++; // устанавливаем следующий трек
        if (songArray.size()>=currentSong) return; // если проиграны все треки, завершаем проигрывание
 
        try { 
            AssetFileDescriptor afd = context.getResources().openRawResourceFd(songArray.get(++currentSong)); // из массива треков достаём следующий и проигрываем его
            mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength()); // воспроизведение из raw
            mp.prepare();
            mp.start();
            afd.close();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});
Yandex
Объявления
12.08.2013, 13:42     MediaPlayer выбор из Raw ?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru