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音频文件浏览+音频播放,布布扣,bubuko.com

时间: 2024-10-25 10:03:31

Android音频文件浏览+音频播放的相关文章

android开发:把一个byte数组转换成wav音频文件,并且播放

============问题描述============ 如题,byte数组转换成wav音频文件,并且播放,下面代码能生成data/data/com.example.playwav/cache/temp.wav 但是在播放的时候报异常. 我把代码和Log贴在下面了. 我分析,原因应该是wav文件格式的编解码问题,不能这么随随便便把任意的一个byte数组就转化为了wav 希望了解wav编解码开发的童鞋给点解决办法 byte[] a = { 52, 51, 48, 28, 58, 64, 98,-1

深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(二,发送彩信&lt;1&gt;)

当准备工作(添加附件,输入文本内容)完成之后,我们这里开始进行该流程分析的第二阶段,也就是发送彩信.这里我们从ComposeMessageActivity类的点击发送按钮(mSendButtonMms)的点击事件开始:<TAG 1-1> @Override public void onClick(View v) { if (mShowTwoButtons && (v == mSendButtonSmsViewSec || v == mSendButtonMmsViewSec)

Android MTP 文件浏览Demo

本apk实现了MTP文件浏览的简单功能.通过Demo apk能够浏览连接到当前设备上的MTP设备上的文件. Demo路径:http://download.csdn.net/detail/sailingthink/7420883

Android 加密/解密音频文件(AES)

加密过程:以byte[]形式读取SD卡上准备好的测试音频文件,使用AES加密算法加密byte[],再保存覆盖原音频文件,此时加密后的音频文件无法被播放.解密和加密过程原理一样,解密保存后的音频文件可以被播放. 代码: VoiceEncryptionActivity.java package com.example.voiceencryption; import java.io.File; import java.io.FileInputStream; import java.io.FileNot

vc++播放wav音频文件

播放wav音频文件的方式:1.从vc++资源里读取音频文件,然后播放2.从硬盘,找到指定路径的音频文件,然后播放 代码实现:方式1: LPCTSTR lpstrWav = NULL; // IDR_WAVE1 是资源里音频文件的名称 lpstrWav = MAKEINTRESOURCE(IDR_WAVE1); // playsound第二个参数是获得当前应用程序的模块句柄. // playsound第三个参数添加参数SND_RESOURCE,指明声音来至程序的资源文件里 ::PlaySound(

【音视频连载-007】基础学习篇-SDL 播放 PCM 音频文件(上)

音视频学习入门技术文章连载: 技术开发故事会连载 [音视频连载-001]基础学习篇-SDL 介绍以及工程配置 [音视频连载-002]基础学习篇-SDL 创建窗口并显示颜色 [音视频连载-003]基础学习篇-SDL 消息循环和事件响应 [音视频连载-004]基础学习篇-SDL 加载图片并显示 [音视频连载-005]基础学习篇-SDL 加载 YUV 文件并显示 [音视频连载-006]基础学习篇-SDL 播放 YUV 视频文件]) 在前面的文章中已经能够利用 SDL 去播放 YUV 视频文件了,接下来

教你如何下载微信公众号的音频文件

无意中在微信公众号里面听到了自己喜欢的原创音乐或者诗歌朗诵,想保存下来,但是微信却没有提供音频下载功能,这可怎么办,别着急,我来帮帮你. 工具/原料 ·         我以360和QQ浏览器为例,其他同理 ·         可以搜到微信的搜索引擎,如搜狗 方法/步骤 1.    用电脑浏览器打开你要的内容页面,先不要做任何操作. 2.    鼠标右键单击,选择"审查元素"或者"审查"(不同类型的浏览器名称或有差异,但是功能一致.)如图是360和QQ浏览器的界面.

DSP-Quattro 5(音频文件编辑工具)

DSP-Quattro 5 Mac特别版是一款由斯特凡诺·迪诺公司开发的音频文件编辑软件,DSP-Quattro 5的功能非常的强大,可以让你的电脑成为一台专业的音频编辑工具,只要有了DSP-Quattro 5使用最新的MacOS库编译,这款这么好的工具有新的完全可编程批处理器,你也可以成为音频编辑制作达人.在家就可以进行音频的编辑和创作. DSP-Quattro 5 Mac软件介绍 DSP-Quattro 5 Mac特别版具有64位音频和图形引擎,多线程内部引擎,使用最新的MacOS库编译,为

Android 使用系统的Activity播放音频文件 intent

Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File("/sdcard/record.wav")), "audio"); startActivity(intent); 这里可以播放wav.amr.MP3等