2011-09-21 7 views
21

res/rawフォルダーに複数のオーディオファイルがあります。オーディオファイル名を含むListViewを表示しています。ユーザーがListViewを選択すると、対応するオーディオファイルを再生したい。 setDataSource(path)を使用しましたが、再生中にエラーが表示されます。そのフォルダから直接オーディオファイルを再生するには?または他の方法はありますか?res/rawフォルダからオーディオファイルを直接再生する方法は?

+0

resフォルダに保存したオーディオファイルの数とそのmp3ファイルの合計サイズは何ですか?ありがとう:) – Beginner

+0

この質問に情報を追加する必要があります。再生しようとしているファイルの種類とエラー/スタックトレースのメッセージが表示されます。 – speedynomads

答えて

45

にこのコードを追加onItemClickListener。

listView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View view, int position,long id) {     
       TextView txtView=(TextView)view.findViewById(R.id.txt_view); 
       String fname=txtView.getText().toString().toLowerCase(); 

           int resID=getResources().getIdentifier(fname, "raw", getPackageName()); 

           MediaPlayer mediaPlayer=MediaPlayer.create(this,resID); 
        mediaPlayer.start(); 
      } 
     }); 
+1

このように使用している間は 'ResourceNotFound'例外が発生しました。私は 'getResources()。getIdentifier(audioname、" res/raw "、getPackageName());を使いました。 – bharath

+0

res/rawは使用しないでください。このgetResources()のように使います。getIdentifier(audioname、 "raw"、getPackageName()); –

+0

同じ問題と例外 – bharath

23

が生から再生するためにこれを試してください::マニフェストファイルの

MediaPlayer mPlayer2; 
mPlayer2= MediaPlayer.create(this, R.raw.bg_music_wav); 
     mPlayer2.start(); 

が許可::

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 

更新::

public void onItemClick(AdapterView<?> arg0, View view, int position,long id) {  
    MediaPlayer mPlayer2; 
if(position==1) 
{ 
    mPlayer2= MediaPlayer.create(this, R.raw.song1); 
      mPlayer2.start(); 
}else it() ..... 
} 
+0

うん。私は 'MediaPlayer.create(...) 'を使って再生できます。これは問題ではありません。私の問題は、ListViewから選択したときに特定のオーディオファイルを再生することです。たくさんのファイルが 'res \ raw'フォルダにあります。 – bharath

+0

私はコード "bg_music_wav.wav"に言及しているので、任意のファイルを再生することができます –

+0

クリックリスナーにコードを入れて独自のロジックを適用する必要があるもう1つの例 –

4
mVideoView = (VideoView) findViewById(R.id.Video_FrontPage); 
uri = Uri.parse("android.resource://com.urPackageName/" + R.raw.welcom_video); 
mVideoView.setVideoURI(uri); 
mVideoView.setMediaController(new MediaController(this)); 
mVideoView.requestFocus(); 
mVideoView.start(); 

この5月はあなたを助け願っています。

+0

R.raw.filenameにアクセスできません。私は自分のresフォルダに生のフォルダを作り、それに私のファイルを入れました。 –

4
lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 

      // selected item 
      String product = ((TextView) view).getText().toString(); 

      int [] resID= {R.raw.sound1,R.raw.sound2,R.raw.sound3}; 
     MediaPlayer mediaPlayer=MediaPlayer.create(this,resID[position]); 

      mediaPlayer.start(); 
      // sending data to new activity 


     } 
    }); 
}