2011-09-21 150 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

您需要將代碼放入點擊監聽器並應用您自己的邏輯 –

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(); 

但願這可以幫助你。

+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 


     } 
    }); 
}