Rakesh Gondaliya
Rakesh Gondaliya

Reputation: 1050

android : use of media

I want to make application that gives me the list of audio files available in my SDCard and then i should be able to play that audio file from my application. And even pause resume audio playback etc. and function..

Any help on that?

Upvotes: 2

Views: 288

Answers (2)

krunal shah
krunal shah

Reputation: 16339

You can see the below code for streaming audio from URL

        private void playVideo() {
        try {
            final String path = "http://www.a1freesoundeffects.com/animals12557/catmeow.wav";              

            // If the path has not changed, just start the media player
            if (path.equals(current) && mp != null) {
                mp.start();
                return;
            }
            current = path;

            // Create a new media player and set the listeners
            mp = new MediaPlayer();             
            mp.setDataSource(path);
            mp.prepare();
            mp.setAudioStreamType(AudioManager.STREAM_MUSIC);


        } catch (Exception e) {
             if (mp != null) {
                mp.stop();
                mp.release();
            }
        }
    }

Upvotes: 1

krunal shah
krunal shah

Reputation: 16339

You can try this way.

 class Mp3Filter implements FilenameFilter {
  public boolean accept(File dir, String name) {
    return (name.endsWith(".mp3"));
   }
 }

public class AudioPlayer extends ListActivity implements OnClickListener{

private static final String MEDIA_PATH = new String("/sdcard/backup/songs");
private List<String> songs = new ArrayList<String>();
private MediaPlayer mp = new MediaPlayer();
private int currentPosition = 0;
private static final String TAG = "Audio Player Demo ";
private static final String isPlaying = "Media is Playing"; 
private static final String notPlaying = "Media has stopped Playing"; 
Button playerButton;

public void onClick(View v) {
    if (v.getId() == R.id.play) {
        playPause();
    }
}

@Override
public void onCreate(Bundle icicle) {
    try {
        super.onCreate(icicle);
        setContentView(R.layout.songlist);
        playerButton = (Button) this.findViewById(R.id.play);
        playerButton.setText(R.string.stop_label);
        playerButton.setOnClickListener(this);          
        updateSongList();
        //demoPlay();
    } catch (NullPointerException e) {
        Log.v(getString(R.string.app_name), e.getMessage());
    }
}

public void updateSongList() {
    File home = new File(MEDIA_PATH);
    if (home.listFiles( new Mp3Filter()).length > 0) {
        for (File file : home.listFiles( new Mp3Filter())) {
            songs.add(file.getName());
        }       
        ArrayAdapter<String> songList = new ArrayAdapter<String>(this,R.layout.song_item,songs);
        setListAdapter(songList);
    }       
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {     
        currentPosition = position;
        playSong(MEDIA_PATH + songs.get(position));
}


  private void playSong(String songPath) {
      try {
       mp.reset();
       mp.setDataSource(songPath);
       mp.prepare();
       mp.start();
       // Setup listener so next song starts automatically
       mp.setOnCompletionListener(new OnCompletionListener() {
       public void onCompletion(MediaPlayer arg0) {
            nextSong();}
       }); 
    } catch(IOException e) {
        Log.v(getString(R.string.app_name), e.getMessage());
    } 

  }

  private void nextSong() {
    if (++currentPosition >= songs.size()) {
      // Last song, just reset currentPosition
      currentPosition = 0;
     // playSong(MEDIA_PATH + songs.get(currentPosition));
    } else {
     // Play next song
     playSong(MEDIA_PATH + songs.get(currentPosition));
    }  
  }

private void demoPause(){
    mp.pause();
    playerButton.setText(R.string.play_label);
    Toast.makeText(this, notPlaying, Toast.LENGTH_LONG).show();
    Log.d(TAG, notPlaying);
}

// Initiate playing the media player
private void demoPlay(){
    mp.start();
    playerButton.setText(R.string.stop_label);
    Toast.makeText(this, isPlaying, Toast.LENGTH_LONG).show();
    Log.d(TAG, isPlaying);
}

// Toggle between the play and pause
private void playPause() {
    if(mp.isPlaying()) {
        demoPause();
    } else {
        demoPlay();
    }   
}      

}

Upvotes: 1

Related Questions