2011-09-21 16 views
21

Ho più file audio nella cartella res/raw. Ho mostrato ListView che contiene il nome del file audio. Voglio riprodurre il file audio corrispondente quando l'utente seleziona nello ListView. Ho usato setDataSource(path), ma mostra errore durante la riproduzione. Come riprodurre i file audio direttamente da quella cartella? O c'è un altro modo?Come riprodurre i file audio direttamente dalla cartella res/raw?

+0

Ho bisogno di una piccola informazione, quanti file audio hai conservato nella cartella res e qual è la dimensione totale di quei file mp3. grazie :) – Beginner

+0

Hai bisogno di aggiungere ulteriori informazioni a questa domanda. Quali tipi di file stai cercando di riprodurre e quale messaggio di errore/traccia di stack stai ricevendo. – speedynomads

risposta

45

aggiungere questo codice in 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

Ho ricevuto l'eccezione 'ResourceNotFound' durante l'utilizzo in questo modo. Ho usato 'getResources(). GetIdentifier (audioname," res/raw ", getPackageName());'. – bharath

+0

non utilizzare res/raw. usa in questo modo getResources(). getIdentifier (audioname, "raw", getPackageName()); –

+0

Ancora lo stesso problema ed eccezione – bharath

23

provare questo per il gioco da raw ::

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

autorizzazione file manifesto ::

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

aggiornamento ::

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

Sì. Posso giocare usando 'MediaPlayer.create (...)'. Questo non è un problema. Il mio problema è che voglio riprodurre un particolare file audio quando seleziono da 'ListView'. Perché molti file sono disponibili nella cartella 'res \ raw'. – bharath

+0

come menzionato nel codice "bg_music_wav.wav" è possibile riprodurre qualsiasi file –

+0

un'altra cosa che è necessario inserire il codice nel listener dei clic e applicare la propria logica –

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

Spero che questo ti aiuta maggio.

+0

Non riesco ad accedere a R.raw.filename. Ho creato una cartella raw nella mia cartella di ricerca e ho inserito anche il mio file. –

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 


     } 
    }); 
} 
Problemi correlati