读取手机里的音乐

//音乐进度条更新

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

}
//
posted @ 2017-11-16 09:12  呀啦啦啦  阅读(262)  评论(0)    收藏  举报