2017-09-06 2 views
0

Ich habe begonnen, für 3 Monate android zu lernen und ich habe einige Probleme mit MediaPlayer.setDataSourceSet Datasource für Mediaplayer

I Weg der MP3-Datei in meinem rohen Verzeichnis erhalten möchten, die für Media Player verwendet wird.

Ich habe viele Möglichkeiten ausprobiert, aber die App funktioniert immer noch nicht, obwohl das Programm nicht abstürzt oder Probleme zeigt. Ich habe viele Lösungen aus anderen Posts versucht, aber es funktioniert immer noch nicht. Hier ist mein Code:

String path = "android.resource://com.example.acer.appdemo/raw/emer2"; 
bleeding1.setDataSource(path); 
bleeding1.prepareAsync(); 
bleeding1.start(); 

textView.setText(getString(R.string.Firstaid2)); 
count = 2; 

Der Grund, warum ich diese wählen, weil ich ein Programm machen wollen, die Audio, jedes Mal, wenn ich ändern streichen Sie nach links oder rechts. Also möchte ich das Programm setDataSource jedes Mal erneut, wenn ich nach links oder rechts wische, und der obige Code ist einer meiner Fälle (Das Audio startet nicht jedes Mal wenn ich einen neuen Pfad einfüge).

Antwort

0

Sie müssen den MediaPlayer zurücksetzen (bluten1.reset() aufrufen), bevor Sie eine neue Datenquelle festlegen können. Siehe https://developer.android.com/reference/android/media/MediaPlayer.html für ein hilfreiches Lifecyle-Diagramm.

+0

Ich auch hinzufügen bluten1.reset() und bluten1.stop() aber es funktioniert nicht, ich denke, das Problem ist mein Weg, aber ich weiß nicht, wie die App überprüfen können die Datei im rohen Verzeichnis zugreifen . Gibt es eine Möglichkeit, dies zu testen oder zu überprüfen? –

+0

Anstatt einen Pfad zu verwenden, können Sie MediaPlayer.create (Context, int) verwenden, um Ihren MediaPlayer zu instanziieren. Diese Methode verwendet Ihren Kontext und die Ressourcen-ID, in Ihrem Fall R.raw.emer2. Das funktioniert zuverlässig und Sie müssen nicht einmal prepare()/prepareAsync() aufrufen. Der Nachteil ist, dass Sie jedes Mal, wenn Sie die Datenquelle ändern möchten, eine neue Instanz Ihres MediaPlayers erstellen müssen. – Headcracker

Verwandte Themen