Все ли версии Android поддерживают потоковую передачу MediaPlayer?

1

Как гласит название, я в основном задаюсь вопросом, работает ли поддержка потоковой передачи MediaPlayer для всех версий Android.

Вот код, который я использую сейчас, который отлично работает на моем Android 2.2:

MediaPlayer mp = new MediaPlayer();
mp.setDataSource(SHOUTCAST_STREAM);
mp.prepare();
mp.start();

Но будет ли это работать на 1.5 или 1.6? Или мне нужно создать собственную систему управления буфером для потока?

* Обновление *

Просто протестировал его на эмуляторе 1.6 и получил следующие ошибки. На эмуляторе 2.2 он работает нормально.

23:15:50.074    31  ERROR   PlayerDriver    Command PLAYER_INIT completed with an error or info PVMFFailure
23:15:50.074    282 ERROR   MediaPlayer error (1, -1)
23:15:50.074    282 ERROR   MediaPlayer io error
23:15:50.074    282 ERROR   MediaPlayer java.io.IOException: Prepare failed.: status=0x1
23:15:50.074    282 ERROR   MediaPlayer     at android.media.MediaPlayer.prepare(Native Method)
23:15:50.074    282 ERROR   MediaPlayer     at org.me.bla.Bla.onCreate(Bla.java:38)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3502)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread.access$2200(ActivityThread.java:116)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1798)
23:15:50.074    282 ERROR   MediaPlayer     at android.os.Handler.dispatchMessage(Handler.java:99)
23:15:50.074    282 ERROR   MediaPlayer     at android.os.Looper.loop(Looper.java:123)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread.main(ActivityThread.java:4203)
23:15:50.074    282 ERROR   MediaPlayer     at java.lang.reflect.Method.invokeNative(Native Method)
23:15:50.074    282 ERROR   MediaPlayer     at java.lang.reflect.Method.invoke(Method.java:521)
23:15:50.074    282 ERROR   MediaPlayer     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
23:15:50.074    282 ERROR   MediaPlayer     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
23:15:50.074    282 ERROR   MediaPlayer     at dalvik.system.NativeStart.main(Native Method)

Значит ли это, что это просто не работает в более старых версиях ОС, или есть какая-нибудь работа? Я предполагаю, что могу просто создать собственную систему буферизации, но сначала хочу убедиться, что нет более простого способа.

  • 1
    Что случилось, когда вы попробовали это в эмуляторах 1.5 и 1.6?
  • 0
    @CommonsWare Я думал об этом, но по какой-то причине я думал, что эмулятор не сможет воспроизводить звук, что не позволило бы мне точно его протестировать. Я сделаю это.
Показать ещё 3 комментария
Теги:
media-player
streaming

2 ответа

1
Лучший ответ

Согласно Ссылки на Android, класс MediaPlayer был доступен с уровня api: 1, и нет ничего о том, что он устарел. Поэтому я бы сказал, что вы будете в безопасности.

На вашем 1.6-эмуляторе вы запустили браузер и убедились, что имеете доступ к Интернету?

Был ли эмулятор 1.6, который вы создали некоторое время назад? У меня были проблемы с эмуляторами, которые я создал через некоторое время (файлы повреждены). Если это так, вы можете создать новый.

Еще одна вещь, о которой я только подумал... Есть ли какая-то аутентификация?

Я нашел этот tutorial, который может быть полезен. Он создает буфер в своем примере.

  • 0
    Да, я тоже это видел, но, похоже, это не так. Причина, по которой я задал этот вопрос, заключалась в том, что я немного прочитал и увидел, что между различными версиями ОС было много проблем. Итак, я хотел посмотреть, что пережили другие народы.
  • 0
    Я только что проверил это, и я могу получить доступ к Интернету без проблем.
0

Я думаю, что проблема связана с setDataSource. он не читает файл должным образом. Лучший способ читается FileInputStream и вызывает метод getFD().Ex:

MediaPlayer mPlayer = новый MediaPlayer();

FileInputStream stream = mContext.openFileInput( "string" );

mPlayer.setDataSource(stream.getFD());

stream.close();

mPlayer.setAudioStreamType(ANNOUCE_STREAM);

mAndroidPlayer.prepare();

mAndroidPlayer.start();

Я думаю, это поможет вам.

  • 0
    Это требует от меня сохранения его в файл и построения целой системы буферизации вокруг него. Поток, о котором я говорю, бесконечен - это не просто 1 песня. Это в основном мой последний вариант, если я не могу найти более простое решение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню