Khai báo mảng, biến cần dùng.
MediaPlayer mPlayer;
ArrayList<String> mMusicList=new
ArrayList<String>();
ArrayList<String> mAudioPath=new
ArrayList<String>();
Copy các hàm cần dùng vào trên ngoặc đóng cuối cùng.
private void playSong(String path) throws IllegalArgumentException,
IllegalStateException, IOException {
mPlayer.reset();
mPlayer.setDataSource(path);
//mPlayer.setLooping(true);
mPlayer.prepare();
mPlayer.start();
}
private ArrayList<String>
getAudioList() {
final Cursor mCursor =
getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,new String[] {
MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DATA }, null, null,"LOWER(" + MediaStore.Audio.Media.TITLE + ") ASC");
int count = mCursor.getCount();
ArrayList<String>
songs=new ArrayList<String>();
int i = 0;
if
(mCursor.moveToFirst()) {
do { mAudioPath.add(mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)));
songs.add(mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME)));
i++;
} while (mCursor.moveToNext());
}
mCursor.close();
return songs;
}
Tạo một file xml trong folder layout, trong đó có một listview.
<ListView
android:id="@+id/li"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/t"
android:layout_gravity="center"
android:layout_marginTop="3dp"
>
</ListView>
Khai báo quyền đọc thẻ nhớ vào file manifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
/>
Trong class sẽ chơi nhạc, khởi tạo dưới setcontentView();
mPlayer = new MediaPlayer();
ListView mListView = (ListView) findViewById(R.id.li);
mMusicList = getAudioList();
for(int i=0;i<mMusicList.size();i++){
for(int j=1;j<mMusicList.size();j++){
if(mMusicList.get(j).equals(mMusicList.get(i))) {
mMusicList.remove(j);
mAudioPath.remove(j);
}
}
}
Vòng lặp for ở đây để loại bỏ các file nhạc trùng nếu có trong thẻ nhớ và lưu
trữ điện thoại.
Khởi tạo listView xuống tiếp.
ArrayAdapter<String>
mAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, mMusicList);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?>
arg0, View arg1, int arg2,long arg3) {
try
{
playSong(mAudioPath.get(arg2));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
Vậy là xong, chạy thử, ấn
vào các dòng của listView, nhạc sẽ phát, ấn dòng khác, nhạc sẽ phát bài khác.
Tên bài hát lấy ra sẽ có cả tên ca sỹ đi kèm, có thể xử lý chặt
chuỗi để chỉ hiển thị tên bài hát.
Nhớ thêm đoạn sau để huỷ khi thoát class.
@Override
public void onDestroy() {
super.onDestroy();
if (mPlayer != null) {
mPlayer.release();
}
}
No comments:
Post a Comment