Установка источника данных для необработанного идентификатора в MediaPlayer

StackOverflow https://stackoverflow.com/questions/1283499

  •  16-09-2019
  •  | 
  •  

Вопрос

В методе MediaPlayer.create можно использовать идентификатор файла Raw, но как его использовать в методе setDataSource?

Это было полезно?

Решение

Вы можете загрузить необработанный звук во входной поток и загрузить его в MediaPlayer, как обычный поток:

InputStream ins = getResources().openRawResource(R.raw.example);

а затем следуйте инструкциям по потоковой передаче, например карманное путешествие

Но это слишком сложно, так как вы можете просто позвонить

mp = MediaPlayer.create(counterstrikesb.this, R.raw.example);

Другие советы

Обратитесь к источнику android.media.MediaPlayer

AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid);
if (afd == null) return;
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();

Возможно, вы захотите добавить в блок try-catch.

перефразируя ответ @Kartik здесь Получить URI файла .mp3, хранящегося в папке res/raw в Android

Если вы хотите получить URI какого-либо ресурса, есть два способа:

  1. Использование имени ресурса

Синтаксис:android.resource://[пакет]/[тип разрешения]/[имя разрешения]

Пример :Uri.parse("android.resource://com.my.package/drawable/icon");

  1. Использование идентификатора ресурса

Синтаксис:android.resource://[пакет]/[resource_id]

Пример :Uri.parse ("android.resource: //com.my.package/" + r.drawable.icon);

Это были примеры получения URI любого файла изображения, хранящегося в папке с возможностью рисования.Аналогичным образом вы можете получить URI папки res/raw.

ИМО Второй путь будет предпочтительным, поскольку переименование ресурса и т. Д. Может быть легко рефактор.

Установите источник данных следующим образом:

CONSTANTS.RES_PREFIX = "android.resource://com.my.package/"
mp.setDataSource(getApplicationContext(),
              Uri.parse(CONSTANTS.RES_PREFIX + R.raw.id));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top