Festlegen Datenquelle mit einem rohen ID in Mediaplayer
-
16-09-2019 - |
Frage
In MediaPlayer.create Verfahren eine ID zu einer Raw-Datei verwendet werden kann, sondern, wie das Verfahren in setDataSource zu benutzen?
Lösung
Sie können das Roh-Audio in einen Eingangsstrom geladen und in einen Mediaplayer laden, als würden Sie einen normalen Strom:
InputStream ins = getResources().openRawResource(R.raw.example);
Andere Tipps
Siehe die Quelle android.media.MediaPlayer
AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid);
if (afd == null) return;
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
Sie möchten Try-Catch zum Block hinzuzufügen.
paraphrasieren @ Kartik Antwort hier erhalten URI von MP3-Datei gespeichert in res / raw Ordner in android
Wenn Sie URI jede Ressource erhalten wollen, dann gibt es zwei Möglichkeiten:
- Verwenden von Resource Name
Syntax: android.resource: // [Paket] / [res geben] / [res name]
Beispiel: Uri.parse ( "android.resource: //com.my.package/drawable/icon");
- Verwendung von Ressourcen-ID
Syntax: android.resource: // [Paket] / [RESOURCE_ID]
Beispiel: Uri.parse ( "android.resource: //com.my.package/" + R.drawable.icon);
Dies waren die Beispiele, die die URI jeder Bilddatei in ziehbar Ordner gespeichert zu bekommen. Ebenso können Sie URIs von res / raw Ordner erhalten.
IMO die zweite Möglichkeit wäre als die Umbenennung der Ressource usw. werden bevorzugt kann werden leicht Refactoring.
Legen Sie die Datenquelle wie folgt:
CONSTANTS.RES_PREFIX = "android.resource://com.my.package/"
mp.setDataSource(getApplicationContext(), Uri.parse(CONSTANTS.RES_PREFIX + R.raw.id));