Android音频文件浏览+音频播放
该Demo执行后,会显示全部你sd卡上的音乐文件列表, 并能够点击列表选择某一首歌曲进行播放。
执行效果:
点击download出现:
然后点击歌曲调用系统播放器播放。
源码:
activity_audio_browser.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" > <ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView> </RelativeLayout>
AudioBrowser.java:
package com.multimediademo5customaudioplayer2; import java.io.File; import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter; /**
* 该Demo执行后,会显示全部你sd卡上的音乐文件列表。 并能够点击列表选择某一首歌曲进行播放。 *
*/
public class AudioBrowser extends ListActivity {
private Cursor cursor;
public static int STATE_SELECT_ALBUM = 0;
public static int STATE_SELECT_SONG = 1;
private int currentState = STATE_SELECT_ALBUM; @SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_audio_browser); /**
* 创建一个字符串数组,表示当执行查询时将从MediaStore返回的列。 */
String[] columns = { android.provider.MediaStore.Audio.Albums._ID,
android.provider.MediaStore.Audio.Albums.ALBUM };
/**
* 返回一个全部可用唱片集的列表
*/
cursor = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
columns, null, null, null);
String[] displayFields = new String[] { MediaStore.Audio.Albums.ALBUM };
int[] displayViews = new int[] { android.R.id.text1 };
/**
* 能够使用setListAdapter方法将Cursor对象绑定到ListView对象
*/
setListAdapter(new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, cursor, displayFields,
displayViews));
} @SuppressWarnings("deprecation")
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
/**
* 推断点击的是歌曲目录还是单个歌曲
*/
if (currentState == STATE_SELECT_ALBUM) {
/**
* 假设是歌曲目录。则进入该目录的歌曲列表
*/
if (cursor.moveToPosition(position)) {
String[] columns = { MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.MIME_TYPE };
String where = android.provider.MediaStore.Audio.Media.ALBUM
+ "=?";
String whereVal[] = { cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Albums.ALBUM)) };
String orderBy = android.provider.MediaStore.Audio.Media.TITLE;
cursor = managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns,
where, whereVal, orderBy);
String[] displayFields = new String[] { MediaStore.Audio.Media.DISPLAY_NAME };
int[] displayViews = new int[] { android.R.id.text1 };
setListAdapter(new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, cursor,
displayFields, displayViews));
currentState = STATE_SELECT_SONG;
}
} else if (currentState == STATE_SELECT_SONG) {
/**
* 假设点击的是歌曲,则调用系统的播放器进行歌曲播放
*/
if (cursor.moveToPosition(position)) {
int fileColumn = cursor
.getColumnIndex(MediaStore.Audio.Media.DATA);
int mimeTypeColumn = cursor
.getColumnIndex(MediaStore.Audio.Media.MIME_TYPE);
String audioFilePath = cursor.getString(fileColumn);
String mimeType = cursor.getString(mimeTypeColumn);
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
File newFile = new File(audioFilePath);
intent.setDataAndType(Uri.fromFile(newFile), mimeType);
startActivity(intent);
}
}
} }
源码下载:
Android音频文件浏览+音频播放的更多相关文章
- Android MTP 文件浏览Demo
本apk实现了MTP文件浏览的简单功能. 通过Demo apk能够浏览连接到当前设备上的MTP设备上的文件. Demo路径:http://download.csdn.net/detail/sailin ...
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<2,下载彩信>)
彩信的接收简介: 主要是由应用程序负责从彩信服务中心(MMSC Multimedia Messaging Service Center)下载彩信信息.大致的流程是Frameworks会先发出一条短信, ...
- Android 使用URLConnection下载音频文件
本文链接: Android 使用URLConnection下载音频文件 使用MediaPlayer播放在线音频,请参考Android MediaPlayer 播放音频 有时候我们会需要下载音频文件.这 ...
- 解析WAV音频文件----》生成WAV音频文件头
前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i WAV音频文件介绍: WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows3.1操作系统 ...
- Android音频: 怎样使用AudioTrack播放一个WAV格式文件?
翻译 By Long Luo 原文链接:Android Audio: Play a WAV file on an AudioTrack 译者注: 1. 因为这是技术文章,所以有些词句使用原文,表达更准 ...
- Android MediaPlayer播放项目res/raw和res/assets下的音频文件
1..播放res/raw //方法一:根据音频文件的ID来创建MediaPlayer MediaPlayer mp = new MediaPlayer(this,R.raw.test); mp.sta ...
- Android音频开发之——如何播放一帧音频
本文重点关注如何在Android平台上播放一帧音频数据.阅读本文之前,建议先读一下<Android音频开发(1):基础知识>,因为音频开发过程中,经常要涉及到这些基础知识,掌握了这些重要的 ...
- Android音视频之AudioTrack播放音频(二)
前一篇讲了如何录制wav音频文件,本篇就来讲讲如何播放wav文件,这里就是使用AudioTrack来播放音频,确切的说是播放pcm格式数据,使用AudioTrack播放也没什么难度,主要就是将数据写入 ...
- 【Android】20.1 音频播放
分类:C#.Android.VS2015: 创建日期:2016-03-11 一.简介 MediaPlayer:适合每次播放一个音频资源或者音频文件的场合. SoundPool:适合同时播放多个音频资源 ...
随机推荐
- PyQt4的一些问题汇总
(1)PyQt4获取中文路径名字乱码问题 网址可以参见:http://permalink.gmane.org/gmane.comp.python.chinese/9916 处理方式的代码可以参考如下 ...
- 反射与annotation
1,可以通过反射取得使用的全部annotation 2,可以通过反射取得指定的annotation. 一个annotation要想变得有意义, 必须结合反射机制取得annotation中设置的全部内容 ...
- 42、Java国际化
简介 国际化的英文单词是Internationalization,有时检测I18N,类似于I18N还有L10N,是Location本地化的简写. Java或计划主要通过如下三个类实现 1.java.u ...
- 【转】C# 视频监控系列(12):H264播放器——播放录像文件
原文地址:http://www.cnblogs.com/over140/archive/2009/03/23/1419643.html?spm=5176.100239.blogcont51182.16 ...
- 使用cros实现跨域请求
直接上代码 后端 this.Response.Headers.Add("Access-Control-Allow-Origin","*"); 响应流里添加一个h ...
- angularJS使用内置服务
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...
- [emqttd] (EMQ)
[emqttd] (EMQ)是采用Erlang语言开发,全面支持MQTT V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器. [emqttd]致力于发布一个基于Erlang/OTP语言平 ...
- openstack neutron L3 HA
作者:Liping Mao 发表于:2014-08-20 版权声明:能够随意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 近期Assaf Muller写了一篇关于Neutro ...
- 【原创】k8s源代码分析-----kubelet(8)pod管理
本文QQ空间链接:http://user.qzone.qq.com/29185807/blog/1460540474 本文csdn博客链接:http://blog.csdn.net/screscent ...
- python 2,3版本自动识别导入
import sys if str(sys.version[0]) == "3": from urllib.parse import quote_plus from ...