Setting Data Source To An Raw Id In Mediaplayer
Solution 1:
Refer to the source android.media.MediaPlayer
AssetFileDescriptorafd= context.getResources().openRawResourceFd(resid);
if (afd == null) return;
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
You may want to add try-catch to the block.
Solution 2:
paraphrasing @Kartik's answer here Get URI of .mp3 file stored in res/raw folder in android
If you want to get any resource URI then there are two ways :
- Using Resource Name
Syntax : android.resource://[package]/[res type]/[res name]
Example : Uri.parse("android.resource://com.my.package/drawable/icon");
- Using Resource Id
Syntax : android.resource://[package]/[resource_id]
Example : Uri.parse("android.resource://com.my.package/" + R.drawable.icon);
These were the examples to get the URI of any image file stored in drawable folder. Similarly you can get URIs of res/raw folder.
IMO the second way would be preferred as renaming the resource etc can be easily refactored.
Set the data source like so:
CONSTANTS.RES_PREFIX = "android.resource://com.my.package/"
mp.setDataSource(getApplicationContext(),
Uri.parse(CONSTANTS.RES_PREFIX + R.raw.id));
Solution 3:
You can load the raw audio into an input stream and load it into a MediaPlayer as you would a normal stream:
InputStreamins= getResources().openRawResource(R.raw.example);
and then follow a streaming tutorial like pocketjourney
But this is overly complicated as you can just call
mp = MediaPlayer.create(counterstrikesb.this, R.raw.example);
Post a Comment for "Setting Data Source To An Raw Id In Mediaplayer"