package com.anhui.music_player.view;
import java.util.List;
import java.util.Random;
import com.anhui.music_player.R;
import com.anhui.music_player.model.Music;
import com.anhui.music_player.util.MusicList;
import com.anhui.music_player.util.ToTime;
import com.anhui.music_player.view.setting.about;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
public class play extends Activity {
List<Music> list;
TextView music_name, etime, stime,lrc;
MediaPlayer mp = null;
SeekBar sb;
ToTime time=new ToTime();
ImageView music_model, music_lasted, music_play, music_next, music_list;
int pattern = 1;
int c;
Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.play);
music_name = (TextView) findViewById(R.id.music_name);
etime = (TextView) findViewById(R.id.music_end_time);
stime = (TextView) findViewById(R.id.music_start_time);
sb = (SeekBar) findViewById(R.id.music_seekBar);
music_model = (ImageView) findViewById(R.id.music_model);
music_lasted = (ImageView) findViewById(R.id.music_lasted);
music_play = (ImageView) findViewById(R.id.music_play);
music_next = (ImageView) findViewById(R.id.music_next);
music_list = (ImageView) findViewById(R.id.music_list);
list = MusicList.getMusicData(this);
mp = new MediaPlayer();
Intent intent = getIntent();
c = intent.getIntExtra("musicId_1", 1);
musicplay(c);
// 播放模式
music_model.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (pattern == 4) {
pattern = 0;
}
pattern++;
if (pattern == 1) {
music_model.setBackgroundResource(R.drawable.sequence);
} else if (pattern == 2) {
music_model.setBackgroundResource(R.drawable.single);
} else if (pattern == 3) {
music_model.setBackgroundResource(R.drawable.model);
} else if (pattern == 4) {
music_model.setBackgroundResource(R.drawable.circle);
}
}
});
// 上一首
music_lasted.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
c = jian(c);
if (mp.isPlaying()) {
mp.stop();
mp.reset();
}
musicplay(c);
}
});
// 下一首
music_next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
c = jia(c);
if (mp.isPlaying()) {
mp.stop();
mp.reset();
}
musicplay(c);
}
});
// 播放/暂停
music_play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mp.isPlaying()) {
mp.pause();
music_play.setBackgroundResource(R.drawable.play_button);
} else if (!mp.isPlaying()) {
mp.start();
music_play.setBackgroundResource(R.drawable.pause_button);
}
}
});
sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mp.seekTo(seekBar.getProgress());
}
});
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer arg0) {
if (pattern == 1) {
if (c < list.size()) {
c++;
musicplay(c);
}
} else if (pattern == 2) {
musicplay(c);
} else if (pattern == 3) {
Random r = new Random();
musicplay(r.nextInt(list.size()));
} else if (pattern == 4) {
c++;
if (c <= list.size()) {
musicplay(c);
} else {
c = 0;
musicplay(c);
}
}
}
});
new Thread(updateThread).start();
}
Runnable updateThread = new Runnable() {
public void run() {
stime.setText(time.toTime(mp.getCurrentPosition()));
// 获得歌曲现在播放位置并设置成播放进度条的值
sb.setProgress(mp.getCurrentPosition());
// 每次延迟100毫秒再启动线程
handler.postDelayed(updateThread, 100);
}
};
public void musicplay(int c) {
Music m = list.get(c);
mp = MediaPlayer.create(play.this, Uri.parse(m.getUrl()));
String name = m.getName();
music_name.setText(name.substring(0, name.length() - 4).split("-")[0]);
etime.setText(time.toTime((int)m.getTime()));
sb.setMax(mp.getDuration());
mp.start();
}
public int jia(int c) {
if (pattern == 1) {
if (c < list.size()) {
c++;
}
} else if (pattern == 2) {
c++;
if (c <= list.size()) {
} else {
c = 0;
}
} else if (pattern == 3) {
Random r = new Random();
c = r.nextInt(list.size());
} else if (pattern == 4) {
c++;
if (c <= list.size()) {
} else {
c = 0;
}
}
return c;
}
public int jian(int c) {
if (pattern == 1) {
if (c > 0) {
c--;
}
} else if (pattern == 2) {
c--;
if (c >= 0) {
} else {
c = list.size();
}
} else if (pattern == 3) {
Random r = new Random();
c = r.nextInt(list.size());
} else if (pattern == 4) {
c--;
if (c >= 0) {
} else {
c = list.size();
}
}
return c;
}
// 菜单选项
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// menu.add(0,1,0,"退出"); //添加选项
// menu.add(0,2,0,"关于"); //添加选项
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@SuppressLint("ShowToast")
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.exit) {
Intent intent = new Intent("com.sleep.close");
sendBroadcast(intent);
dialog();
}
if (item.getItemId() == R.id.about) {
Intent intent1 = new Intent(play.this, about.class);
startActivity(intent1);
}
return super.onOptionsItemSelected(item);
}
protected void dialog() {
AlertDialog.Builder builder = new Builder(play.this);
builder.setMessage("确定要退出吗?");
builder.setTitle("提示");
builder.setPositiveButton("确认",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
// AccoutList.this.finish();
// System.exit(1);
android.os.Process.killProcess(android.os.Process
.myPid());
}
});
builder.setNegativeButton("取消",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
}
package com.anhui.music_player.util;
import java.util.ArrayList;
import java.util.List;
import com.anhui.music_player.model.Music;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;
public class MusicList {
public static List<Music> getMusicData(Context context) {
List<Music> musicList = new ArrayList<Music>();
ContentResolver cr = context.getContentResolver();
if (cr != null) {
// 获取所有歌曲
Cursor cursor = cr.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null,
null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
if (null == cursor) {
return null;
}
if (cursor.moveToFirst()) {
do {
Music m = new Music();
String title = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.TITLE));
String singer = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.ARTIST));
if ("<unknown>".equals(singer)) {
singer = "未知艺术家";
}
String album = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.ALBUM));
long size = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media.SIZE));
long time = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media.DURATION));
String url = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.DATA));
String name = cursor
.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
String sbr = name.substring(name.length() - 3,
name.length());
if (sbr.equals("mp3")) {
m.setTitle(title);
m.setSinger(singer);
m.setAlbum(album);
m.setSize(size);
m.setTime(time);
m.setUrl(url);
m.setName(name);
musicList.add(m);
}
} while (cursor.moveToNext());
}
if (cursor != null) {
cursor.close();
}
}
return musicList;
}
}