开发者

android : use of media

I want to make application that gives me the list of audio files available in my SDC开发者_如何学Card 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?


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


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

}

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜