,
private class SongDetails {
String songTitle = "";
String songArtist = "";
String songData = "";
}
mp3
private void getAllSongs()
{
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
final String[] projection = new String[] {
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.DATA};
final String sortOrder = MediaStore.Audio.AudioColumns.TITLE
+ " COLLATE LOCALIZED ASC";
Cursor cursor = null;
try {
Uri uri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
cursor = getBaseContext().getContentResolver().query(uri,
projection, selection, null, sortOrder);
if (cursor != null) {
songs = new ArrayList<SongDetails>(cursor.getCount());
cursor.moveToFirst();
SongDetails details;
while (!cursor.isAfterLast()) {
details = new SongDetails();
details.songTitle = cursor.getString(0);
details.songArtist = cursor.getString(1);
details.songData = cursor.getString(2);
songs.add(details);
cursor.moveToNext();
}
}
} catch (Exception ex) {
} finally {
if (cursor != null) {
cursor.close();
}
}
}
public interface OnPlayerEventListener {
void onPlayerComplete();
void onPlayerStart(String Title,int songDuration,int songPosition);
}
public class simplePlayer
{
OnPlayerEventListener mListener;
Activity mActivity;
public ArrayList<songDetails> songs = null;
public boolean isPaused = false;
public int currentPosition = 0;
public int currentDuration = 0;
public static MediaPlayer player;
public simplePlayer(Activity ma)
{
mActivity = ma;
mListener = (OnPlayerEventListener) mActivity;
}
public void init(ArrayList<songDetails>_songs)
{
songs = _songs;
currentPosition = 0;
if(player == null)
{
player = new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
player.stop();
player.reset();
nextSong();
mListener.onPlayerSongComplete();
}
});
}
}
public void stop()
{
if(player != null)
{
if(player.isPlaying())
player.stop();
player.reset();
}
}
public void pause()
{
if(!isPaused && player != null)
{
player.pause();
isPaused = true;
}
}
public void play()
{
if(player != null)
{
if(!isPaused && !player.isPlaying())
{
if(songs != null)
{
if(songs.size() > 0)
{
try {
Uri u = Uri.fromFile(new File(songs.get(currentPosition).songData));
player.setDataSource(mActivity,u);
player.prepare();
currentDuration = player.getDuration();
player.start();
mListener.onPlayerSongStart("Now Playing: "
+ songs.get(currentPosition).songArtist
+ " - "+ songs.get(currentPosition).songTitle
,currentDuration,currentPosition);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
else
{
player.start();
isPaused = false;
}
}
}
}
public void nextSong()
{
if(player != null)
{
if(isPaused)
isPaused = false;
if(player.isPlaying())
player.stop();
player.reset();
if((currentPosition + 1) == songs.size())
currentPosition = 0;
else
currentPosition = currentPosition + 1;
play();
}
}
public void previousSong()
{
if(player != null)
{
if(isPaused)
isPaused = false;
if(player.isPlaying())
player.stop();
player.reset();
if(currentPosition - 1 < 0)
currentPosition = songs.size();
else
currentPosition = currentPosition -1;
play();
}
}
public void setSeekPosition(int msec)
{
if(player != null)
player.seekTo(msec);
}
public int getSeekPosition()
{
if(player != null)
return player.getDuration();
else
return -1;
}
}
public class MainActivity extends ActionBarActivity
implements OnPlayerEventListener {
simplePlayer player;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getAllSongs();
if (player == null) {
player = new simplePlayer(this);
player.init(songs);
player.play();
seekBar.setMax(player.currentDuration);
}
}
@Override
public void onPlayerSongComplete() {
}
@Override
public void onPlayerSongStart(String Title, int songDuration, int songPosition) {
this.setTitle(Title);
seekBar.setMax(songDuration);
seekBar.setProgress(0);
}
}
!