读取手机里的音乐
//音乐进度条更新
private Handler handler=new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
// int progress = msg.arg1;
if (msg.what==1){
int position = mediaPlayer.getCurrentPosition();
seek_bar.setProgress(position);
currenttime_tv.setText(parseTime(position));
updateProgress();
}
return true;
}
});
private void updateProgress(){
handler.sendEmptyMessageDelayed(1,1000);
}
// 解析时间
private String parseTime(int oldTime) {
SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");// 时间格式
String newTime = sdf.format(new Date(oldTime));
return newTime;
}
public class MainActivity extends AppCompatActivity {
protected ListView mListView;
private List<MediaInfo> mMediaInfoList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
initView();
mMediaInfoList = getDatas();
}
private void initView() {
mListView = (ListView) findViewById(R.id.list_view);
}
// 获取系统媒体数据库中的音频多媒体信息
private List<MediaInfo> getDatas() {
List<MediaInfo> list = new ArrayList<>();
// 使用内容解析者访问系统提供的数据库
Cursor cursor = getContentResolver()
.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null,
null,
null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER);// 默认排序顺序
// 如果游标读取时还有下一个数据,读取
int idIndex = cursor.getColumnIndex(MediaStore.Audio.Media._ID);//获取列名对应的索引
int titleIndex = cursor.getColumnIndex(MediaStore.Audio.Media.TITLE);// 标题
int artistIndex = cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);// 艺术家
int uriIndex = cursor.getColumnIndex(MediaStore.Audio.Media.DATA);// 文件路径
while (cursor.moveToNext()) {
// 根据索引值获取对应列名中的数值
long _id = cursor.getLong(idIndex);
String title = cursor.getString(titleIndex);
String artist = cursor.getString(artistIndex);
String uri = cursor.getString(uriIndex);
MediaInfo mediaInfo = new MediaInfo(_id, uri, title, artist);
list.add(mediaInfo);
}
for (MediaInfo mediaInfo : list) {
Log.d("1507", "" + mediaInfo.toString());
}
return list;
}
}
//播放音乐以及切换上一首下一首歌曲,当播放完毕之后自动播放下一首
private void changeMusic(int position) {
if (position < 0) {
position = list.size() - 1;
mCurrentPosition = position;
} else if (position > list.size() - 1) {
position = 0;
mCurrentPosition = position;
}
if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnCompletionListener(this);
}
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(list.get(position).getUri());
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
seek_bar.setProgress(0);
seek_bar.setMax(mediaPlayer.getDuration());
alltimes_tv.setText(parseTime(mediaPlayer.getDuration()));
updateProgress();
}
//

浙公网安备 33010602011771号