Разбор и воспроизведение файла .pls в Android - PullRequest
9 голосов
/ 26 ноября 2011

Кто-нибудь может мне помочь, как разобрать и воспроизвести этот файл .pls в Android

 [playlist]
 NumberOfEntries=1
 File1=http://stream.radiosai.net:8002/

1 Ответ

13 голосов
/ 26 ноября 2011

В результате быстрого поиска был получен базовый PlsParser из приложения NPR, которое, судя по всему, просто проанализирует файл .pls и вернет все встроенные URL-адреса в списке строк. Возможно, вы захотите взглянуть на это как на отправную точку.

После этого вы сможете передавать URL-адрес объекту MediaPlayer, хотя я не совсем уверен в том, какие форматы / протоколы поддерживаются или какие ограничения могут применяться в случае потоковой передачи. Последовательность вызовов медиаплеера будет выглядеть примерно так:

MediaPlayer mp = new MediaPlayer();
mp.setDataSource("http://stream.radiosai.net:8002/");
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.prepare(); //also consider mp.prepareAsync().
mp.start();

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

public class PlsParser {
        private final BufferedReader reader;

        public PlsParser(String url) {
            URLConnection urlConnection = new URL(url).openConnection();
            this.reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
        }

        public List<String> getUrls() {
            LinkedList<String> urls = new LinkedList<String>();
            while (true) {
                try {
                    String line = reader.readLine();
                    if (line == null) {
                        break;
                    }
                    String url = parseLine(line);
                    if (url != null && !url.equals("")) {
                        urls.add(url);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return urls;
        }

        private String parseLine(String line) {
            if (line == null) {
                return null;
            }
            String trimmed = line.trim();
            if (trimmed.indexOf("http") >= 0) {
                return trimmed.substring(trimmed.indexOf("http"));
            }
            return "";
        }
}

Получив это, вы можете просто создать новый PlsParser с URL-адресом файла .pls и затем вызвать getUrls. Каждый элемент списка будет URL-адресом, найденным в файле .pls. В вашем случае это будет просто http://stream.radiosai.net:8002/. Как уже было сказано, вы можете передать это MediaPlayer.

...