Потоковое воспроизведение аудио MediaPlayer не работает на Galaxy Tab - PullRequest
3 голосов
/ 08 февраля 2011

У меня возникли проблемы с воспроизведением потокового * звука на Galaxy Tab (работает на HTC Desire HD и Nexus One).Когда я создаю объект MediaPlayer, он выдает такую ​​ошибку:

02-09 02:21:39.088: VERBOSE/MediaPlayer-JNI(9325): native_setup
02-09 02:21:39.088: VERBOSE/MediaPlayer(9325): constructor
02-09 02:21:39.088: VERBOSE/MediaPlayer(9325): setListener
02-09 02:21:39.092: INFO/MediaPlayer(9325): uri is:http://147.83.39.86:3200/osgi/files/TTS/1297185775715.ogg
02-09 02:21:39.092: INFO/MediaPlayer(9325): path is null
02-09 02:21:39.092: DEBUG/MediaPlayer(9325): Couldn't open file on client side, trying server side
02-09 02:21:39.092: VERBOSE/MediaPlayer-JNI(9325): setDataSource: path http://147.83.39.86:3200/osgi/files/TTS/1297185775715.ogg
02-09 02:21:39.092: VERBOSE/MediaPlayer(9325): setDataSource(http://147.83.39.86:3200/osgi/files/TTS/1297185775715.ogg)
02-09 02:21:39.092: ERROR/MediaPlayerService(2392): Failed to create player object
02-09 02:21:39.092: ERROR/MediaPlayer(9325): Unable to to create media player
02-09 02:21:39.104: DEBUG/MediaPlayer(9325): create failed:
02-09 02:21:39.104: DEBUG/MediaPlayer(9325): java.io.IOException: setDataSource failed.: status=0x80000000
02-09 02:21:39.104: DEBUG/MediaPlayer(9325):     at android.media.MediaPlayer.setDataSource(Native Method)
02-09 02:21:39.104: DEBUG/MediaPlayer(9325):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:745)
02-09 02:21:39.104: DEBUG/MediaPlayer(9325):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:675)
02-09 02:21:39.104: DEBUG/MediaPlayer(9325):     at android.media.MediaPlayer.create(MediaPlayer.java:611)
02-09 02:21:39.104: DEBUG/MediaPlayer(9325):     at android.media.MediaPlayer.create(MediaPlayer.java:592)
02-09 02:21:39.104: DEBUG/MediaPlayer(9325):     at com.vodafone.inredis.movil.interfazweb.InredisWebViewClient.shouldOverrideUrlLoading(InredisWebViewClient.java:37)

И вот как я создаю объект MediaPlayer, ничего странного:

Uri tempPath = Uri.parse(url);
player = MediaPlayer.create(interfazWeb, tempPath);
if (player != null){
  player.start();
} else {
  Log.e(TAG, "No se puede abrir el audio:" + url);
}
return true;

И чтобы предоставить больше информацииЯ могу сказать, что я проверил пройденный URL, и я могу загрузить его с родным браузером и играть в него нормально.Очевидно, что я могу играть в нее с помощью моего настольного браузера.

Испытывает ли anyboedy эту проблему с указанным устройством?

Заранее спасибо.

######## EDIT ##############

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

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

02-10 01:36:36.945: VERBOSE/MediaPlayer-JNI(8371): native_setup
02-10 01:36:36.945: VERBOSE/MediaPlayer(8371): constructor
02-10 01:36:36.945: VERBOSE/MediaPlayer(8371): setListener
02-10 01:36:36.948: VERBOSE/MediaPlayer-JNI(8371): setDataSource: path /sdcard/audioTmp360988.ogg
02-10 01:36:36.948: VERBOSE/MediaPlayer(8371): setDataSource(/sdcard/audioTmp360988.ogg)
02-10 01:36:36.952: VERBOSE/MediaPlayer(8371): prepare
02-10 01:36:36.952: ERROR/MediaPlayerService(2394): Client::notify In
02-10 01:36:36.952: ERROR/MediaPlayer(8371): message received msg=1, ext1=0, ext2=0
02-10 01:36:36.952: VERBOSE/MediaPlayer(8371): prepared
02-10 01:36:36.952: VERBOSE/MediaPlayer(8371): signal application thread
02-10 01:36:36.952: ERROR/MediaPlayer(8371): callback application
02-10 01:36:36.952: ERROR/MediaPlayer(8371): back from callback
02-10 01:36:36.952: VERBOSE/MediaPlayer(8371): prepare complete - status=0
02-10 01:36:41.437: VERBOSE/MediaPlayer-JNI(8371): native_finalize
02-10 01:36:41.437: VERBOSE/MediaPlayer-JNI(8371): release
02-10 01:36:41.437: VERBOSE/MediaPlayer(8371): setListener
02-10 01:36:41.437: VERBOSE/MediaPlayer(8371): disconnect
02-10 01:36:41.437: VERBOSE/MediaPlayer(8371): destructor
02-10 01:36:41.437: VERBOSE/MediaPlayer(8371): disconnect

Да ладно, я не могу быть единственным!

Ответы [ 2 ]

3 голосов
/ 11 февраля 2011

WAV и OGG Потоковое аудио с MediaPlayer не работает на Samsung Galaxy TAB (с FroYo).Я тестировал и использовал API Demo (8), а именно этот фрагмент кода на /Demos/src/com/example/android/apis/media/MediaPlayerDemo_Audio.java:

    private void playAudio(Integer media) {
        try {
            switch (media) {
                case LOCAL_AUDIO:
                    /**
                     * TODO: Set the path variable to a local audio file path.
                     */
//                  path = "http://upload.wikimedia.org/wikipedia/commons/a/a9/Tromboon-sample.ogg";
//                  path = "http://www.robtowns.com/music/blind_willie.mp3";
                    path = "http://www.nch.com.au/acm/8k16bitpcm.wav";
                    if (path == "") {
                        // Tell the user to provide an audio file URL.
                        Toast
                                .makeText(
                                        MediaPlayerDemo_Audio.this,
                                        "Please edit MediaPlayer_Audio Activity, "
                                                + "and set the path variable to your audio file path."
                                                + " Your audio file must be stored on sdcard.",
                                        Toast.LENGTH_LONG).show();

                    }
                    mMediaPlayer = new MediaPlayer();
                    Uri tempUri = Uri.parse(path);
                    try {
                        mMediaPlayer.setDataSource(this, tempUri);
                    }
                    catch (IllegalStateException e) {
                        Log.d(TAG, "IllegalStateException: " + e.getMessage());
                    }
                    catch (IOException e) {
                        Log.d(TAG, "IOException: " + e.getMessage());
                    }
                    catch (IllegalArgumentException e) {
                        Log.d(TAG, "IllegalArgumentException: " + e.getMessage());
                    }
                    catch (SecurityException e) {
                        Log.d(TAG, "SecurityException: " + e.getMessage());
                    }
                    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    mMediaPlayer.prepare();
                    mMediaPlayer.start();
                    break;
                case RESOURCES_AUDIO:
                    /**
                     * TODO: Upload a audio file to res/raw folder and provide
                     * its resid in MediaPlayer.create() method.
                     */
                    mMediaPlayer = MediaPlayer.create(this, R.raw.test_cbr);
                    mMediaPlayer.start();

            }
            tx.setText("Playing audio...");

        } catch (Exception e) {
            Log.e(TAG, "error: " + e.getMessage(), e);
        }

    }

Я просто изменил эти 3 строки, определяющие путь к файлу для воспроизведения,что-нибудь еще в проекте.Ну, будет проигрываться только файл Mp3, и WAV, и OGG выдают, и исключение похоже на тот, что у меня на вопросе.

Кто-нибудь еще хотел бы попробовать?Должен ли я предположить, что есть ошибка?

0 голосов
/ 25 апреля 2013

мой аудиофайл, закодированный с помощью AudioEncoder.AMR_NB, файл может быть воспроизведен в 3G, но не может воспроизводиться в Wifi, Mp3-файл может быть воспроизведен во всех файлах. Поэтому я предполагаю, что формат файла влияет на результат.

...