音频名称和长度-android 如何获取raw文件下音频的名称和时长?

问题描述

android 如何获取raw文件下音频的名称和时长?

我在res/raw文件下放了8个很短的音频,想把它们的名称和时长获取出来显示在一个listview中,如何获取它们的名称和时长呢?

解决方案

百度了一种方法,测试有用,记录下来,算是对问题的回答。
思路:遍历raw目录下文件,可以获取文件的id和名称(根据id拼接出音频资源的uri);通过MediaPlayer获取音频的duration。
主要代码如下:
Field[] fields = R.raw.class.getDeclaredFields();
int rawId;
String rawName;
for (int i = 0; i < fields.length; i++) {
try {
rawId = fields[i].getInt(R.raw.class);
rawName = fields[i].getName();
Log.i(TAG, "-----------rawId="+rawId+"----------");
Uri uri = Uri.parse("android.resource://"+getContext().getPackageName()+"/"+ rawId);
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(getContext(), uri);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepare();
int duration = mediaPlayer.getDuration();
audioInfo = new AlarmClockAudioInfo(rawName, RingTextUtil.showAudioTime(duration), uri);
} catch (Exception e) {
e.printStackTrace();
}
mediaPlayer =null;
audioInfos.add(audioInfo);
}
fields = null;


解决方案二:

mediaplay可以

时间: 2025-01-20 23:23:16

音频名称和长度-android 如何获取raw文件下音频的名称和时长?的相关文章

android文件操作——读取assets和raw文件下的内容_Android

来自Resources和Assets 中的文件只可以读取而不能进行写的操作. assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件. 1. 先在Activity里面调用getAssets() 来获取AssetManager引用. 2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream. 3. 然后就是用已经open fi

android文件操作——读取assets和raw文件下的内容

来自Resources和Assets 中的文件只可以读取而不能进行写的操作. assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件. 1. 先在Activity里面调用getAssets() 来获取AssetManager引用. 2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream. 3. 然后就是用已经open fi

Android 读取assets和raw文件内容实例代码_Android

android之文件操作--读取assets和raw文件下的内容 1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹)       2.创建两个txt文件,复制到asset和raw文件夹中: 3.实现的效果: 4.实现代码: (1)布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android

Android 读取assets和raw文件内容实例代码

android之文件操作--读取assets和raw文件下的内容 1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹) 2.创建两个txt文件,复制到asset和raw文件夹中: 3.实现的效果: 4.实现代码: (1)布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="

编程实战——电影管理器之利用MediaInfo获取高清视频文件的相关信息

随着高速(20M)宽带.HTPC.大容量硬盘(3T)的普及,下载高清片并利用大屏幕观看也成为普通的事情. 随着下载影片的增多,管理就有了问题,有时在茫茫文件夹下找寻一个影片也是一件费时费力的事. 于是萌生了自己编写电影管理器的想法,并逐步逐步在实现.利用博客记录编写的过程,也是和网友之间的交流.期望在交流的过程中,网友能提出一些中肯的意见,使自己少走些弯路.   我在拿到一个高清视频文件时.我希望能有办法获知以下的信息 文件名:视频文件的文件名,这个比较简单,利用FileInfo类就能获得 文件

Android编程获取包名,版本信息及VersionName名称的方法_Android

本文实例讲述了Android编程获取包名,版本信息及VersionName名称的方法.分享给大家供大家参考,具体如下: 话不多说,直接上代码,此处,主要是在版本升级的时候,使用较多. private String getAppInfo() { try { String pkName = this.getPackageName(); String versionName = this.getPackageManager().getPackageInfo( pkName, 0).versionNam

Android中获取屏幕的长度和宽度

android中获取屏幕的长度和宽度,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得 到的结果却为320*533 结果很不靠谱,于是自己写了几行代码,亲测一下 测试参数: 测试环境: i9000( 三星) 物理屏幕:480*800px density :1.5 测试代码: // 获取屏幕密度(方法1) int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏

Android raw 目录下视频的缩略图的获取

Android raw 目录下视频的缩略图的获取 以下代码用于获取 Android raw目录下视频文件的缩略图: /** * 获取 raw 下 指定视频文件的缩略图 * @param aVideoName * @return */ private Drawable getThumbnail(String aVideoName) { Drawable ret = null; int id = 0; try { id = R.raw.class.getDeclaredField(aVideoNam

Android编程获取Wifi名称(SSID)的方法

本文实例讲述了Android编程获取Wifi名称(SSID)的方法.分享给大家供大家参考,具体如下: 可以使用WifiManager和WifiInfo来获取当前Wifi连接信息 WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); Log.d("wifiInfo", wifiInfo.toSt