문제

MediaPlayer.create 메소드에서 원시 파일의 ID를 사용할 수 있지만 SetDatasource 메소드에서이를 사용하는 방법은 무엇입니까?

도움이 되었습니까?

해결책

원시 오디오를 입력 스트림에로드하여 일반 스트림과 같이 미디어 플레이어에로드 할 수 있습니다.

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의 답변을 여기에서 paraphrasing Android의 RES/RAW 폴더에 저장된 .mp3 파일의 URI 받기

Resource URI를 받으려면 두 가지 방법이 있습니다.

  1. 리소스 이름 사용

구문 : android.resource : // [package]/[res type]/[res name

예 : uri.parse ( "Android.resource : //com.my.package/drawable/icon");

  1. 리소스 ID 사용

구문 : android.resource : // [package]/[resource_id

예 : uri.parse ( "android.resource : //com.my.package/" + r.drawable.icon);

이들은 Drawable 폴더에 저장된 이미지 파일의 URI를 가져 오는 예입니다. 마찬가지로 RES/RAW 폴더의 URI를 얻을 수 있습니다.

IMO는 자원 등을 쉽게 리팩토링 할 수 있으므로 두 번째 방법은 선호됩니다.

SO처럼 데이터 소스를 설정하십시오.

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