2017-09-06 5 views
0

のために私は3ヶ月間アンドロイド学ぶために始めていると私はメディアプレーヤーのために使用されている私の生のディレクトリにmp3ファイルのパスを取得したいMediaPlayer.setDataSourceセットデータソースは、MediaPlayerの

といくつかの問題を抱えています。

私は多くの方法を試しましたが、プログラムがクラッシュしたり問題を表示しなくても、まだ動作していません。私は他の投稿から多くのソリューションを試しましたが、それでも動作していません。 は、ここに私のコードです:

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; 

私は左または右にスワイプオーディオたびに変更するプログラムを作りたいので、私は、これを選択した理由。だから、私は左または右にスワイプするたびにプログラムsetDataSourceをもう一度、上記のコードは私のケースの1つです(オーディオは私が新しいパスを置くたびに起動しません)。

答えて

0

新しいデータソースを設定する前に、MediaPlayerをリセットする必要があります(bleeding1.reset()を呼び出す)必要があります。 便利なライフサイクル図については、https://developer.android.com/reference/android/media/MediaPlayer.htmlを参照してください。

+0

私もbleeding1.reset()とbleeding1.stop()を追加しますが、動作しません。私の問題は私のパスだと思いますが、アプリケーションをチェックする方法がわからないので、生のディレクトリ。これをテストするかチェックする方法はありますか? –

+0

パスを使用する代わりに、MediaPlayer.create(Context、int)を使用してMediaPlayerをインスタンス化することができます。このメソッドは、コンテキストとリソースID(R.raw.emer2)を取ります。これは確実に動作し、prepare()/ prepareAsync()を呼び出す必要はありません。欠点は、データソースを変更するたびにMediaPlayerの新しいインスタンスを作成する必要があることです。 – Headcracker