浏览 11309 次
锁定老帖子 主题:带ListView的音乐播放器
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-23
带ListView的音乐播放器
[功能] 前篇写的是:通过文件名来播放视频 今天说的是:通过MediaStore 来得到目标的Uri 在把之传入MediaPlay 然后再播放
所以 会有2个重点: * 列出emulator 的所有音乐文件 * 音乐播放器
[代码 步骤] 1. 构建界面:main.xml 写道
1 Button 用于音乐播放控制(暂停/继续)
1 TextView 用于显示目标Uri 1 ListView 用于列出所有音乐文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <Button android:id="@+id/cmd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Prepare" /> <TextView android:id="@+id/name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="NAME" /> </LinearLayout> <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
2. 列出所有音乐文件 并转入 adapter Cursor c = getContentResolver().query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null); String[] from = {MediaStore.Audio.AudioColumns.TITLE, MediaStore.Audio.AudioColumns.ARTIST}; int[] to = {android.R.id.text1,android.R.id.text2}; final CursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2,c, from, to);
3. 使用之 list.setAdapter(adapter);
4. 与音乐播放有关的功能 //1. 定义 MediaPlayer mp; //2. 初始化 mp = new MediaPlayer(); //3. 暂停 mp.pause(); //4. 继续 mp.start(); //5. 判断是否正在播放 mp.isPlaying() //6.使用目标Uri mp.release(); mp = MediaPlayer.create(this, uri);
5. 单击ListView中某个Item 会播放目标音乐资源 public void playMusic(long arg3) throws IllegalArgumentException, IllegalStateException, IOException{ Uri uri = Uri.withAppendedPath( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, String.valueOf(arg3)); TextView tv = (TextView) findViewById(R.id.name); tv.setText(uri.toString()); mp.release(); mp = MediaPlayer.create(this, uri); mp.start(); } list.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub try { playMusic(arg3); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } });
因为这是个音乐播放器 界面也没什么特别之处 就此略过 只有一个关于所有音乐文件的ListView
done! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-01-25
模拟一个String数组,换成ArrayAdapter试试看,好像有问题。
以前我写了一个,就没写出来…… 后来给淡忘了…… |
|
返回顶楼 | |
发表时间:2010-01-25
BarryWei 写道 模拟一个String数组,换成ArrayAdapter试试看,好像有问题。
以前我写了一个,就没写出来…… 后来给淡忘了…… 我不清楚你是怎么使用的 我这边还好 我这里就有它的使用情况, 题目:Adapter:SimpleAdapter SimpleCursorAdapter ArrayAdapter 而且有例子下载 你可以下载看看 和你比较一下 或者把你写的贴一下 我好看看是哪里问题 |
|
返回顶楼 | |
发表时间:2010-01-29
gryphone 写道 BarryWei 写道 模拟一个String数组,换成ArrayAdapter试试看,好像有问题。
以前我写了一个,就没写出来…… 后来给淡忘了…… 我不清楚你是怎么使用的 我这边还好 我这里就有它的使用情况, 题目:Adapter:SimpleAdapter SimpleCursorAdapter ArrayAdapter 而且有例子下载 你可以下载看看 和你比较一下 或者把你写的贴一下 我好看看是哪里问题 5644646454 |
|
返回顶楼 | |
发表时间:2010-01-30
hongbiangoal 写道 gryphone 写道 BarryWei 写道 模拟一个String数组,换成ArrayAdapter试试看,好像有问题。
以前我写了一个,就没写出来…… 后来给淡忘了…… 我不清楚你是怎么使用的 我这边还好 我这里就有它的使用情况, 题目:Adapter:SimpleAdapter SimpleCursorAdapter ArrayAdapter 而且有例子下载 你可以下载看看 和你比较一下 或者把你写的贴一下 我好看看是哪里问题 5644646454 什么意思? |
|
返回顶楼 | |
发表时间:2010-09-06
楼主可以把这源代码放上来提供下载吗?好学习学习
|
|
返回顶楼 | |
发表时间:2011-01-11
楼主请问
Cursor c = getContentResolver().query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null); 如何获取指定文件夹的歌曲信息,而不是整个sd卡的。 |
|
返回顶楼 | |