android里如何解析音频文件获取标题、专辑、文件名、艺术家

android里如何解析音频文件获取标题、专辑、文件名、艺术家,第1张

文件放在res/raw下,程序运行时把它释放到指定目录,代码如下:(供楼主参考)

private final String DATABASE_PATH = androidosEnvironmentgetExternalStorageDirectory()getAbsolutePath() + "/db_exam";

private final String DATABASE_FILENAME = "teldb";

public void extractDBFileFromRes(){

try {

String dbFileName = DATABASE_PATH + "/" + DATABASE_FILENAME;

File dir = new File(DATABASE_PATH);

if (!direxists()){

dirmkdir();

Logi("SQLite", "dir made:" + DATABASE_PATH);

} else {

Logi("SQLite", "dir exist:" + DATABASE_PATH);

}

try {

//如果数据库已经在SD卡的目录下存在,那么不需要重新创建,否则创建文件,并拷贝/res/raw下面的数据库文件

if (!(new File(dbFileName)exists())){

Logi("SQLite", dbFileName + ":file not exist");

//res/raw数据库作为输出流

InputStream inputStream = thisgetResources()openRawResource(Rrawtel);

//测试

int size = inputStreamavailable();

Logi("SQLite", "DATABASE_SIZE:" + 1);

Logi("SQLite", "count:" + 0);

//用于存放数据库信息的数据流

FileOutputStream fileOutputStream = new FileOutputStream(dbFileName);

byte[] buffer = new byte[8192];

int count = 0;

Logi("SQLite", "count:" + count);

//把数据写入SD卡目录下

while ((count = inputStreamread(buffer)) > 0 ) {

fileOutputStreamwrite(buffer, 0, count);

}

fileOutputStreamflush();

fileOutputStreamclose();

inputStreamclose();

}

} catch (FileNotFoundException e) {

Loge("Database", "File not found");

eprintStackTrace();

}

} catch (IOException e) {

Loge("Database", "IO exception");

eprintStackTrace();

}

}

通过MediaPlayer 的 getDuration() 可以获取MP3的播放时长

或者String[] mCursorCols = new String[] { MediaStoreAudioMedia_ID,

MediaStoreAudioMediaARTIST, MediaStoreAudioMediaALBUM,

MediaStoreAudioMediaDURATION };其中MediaStoreAudioMediaDURATION 就是获得时间的

向SD卡中写一个文件两种方法:

一种方法 直接用DDMS手动导入 文件名不能有中文 大写英文

二种方法 使用代码,用文件流进行写入 先将要导入的文件放在项目的assets目录下

public String getSDPath(String fileNames) { //在SD中新建一个MP3文件 fileNames参数为文件名

File sdDir = null;

// 判断sd卡是否存在

boolean sdCardExist = EnvironmentgetExternalStorageState()equals(

androidosEnvironmentMEDIA_MOUNTED);

if (sdCardExist) {

Systemoutprintln("sd卡存在");

sdDir = EnvironmentgetExternalStorageDirectory();// 获取跟目录

}

String fileName = sdDirtoString() + fileNames;

return fileName;

}

/

拷贝文件到SD中

filePath assets中文件路径

/

public String mergeFile(Context c, String filePath, String dst) {

File fileone = new File(dst);

Systemoutprintln("dst文件是否存在" + fileoneexists());

if (!fileoneexists()) {

OutputStream out;

try {

out = new FileOutputStream(dst);

byte[] buffer = new byte[1024];

InputStream in;

int readLen = 0;

// 获得输入流 ,注意文件的路径 此文件路径为在程序的assets目录下

in = cgetAssets()open(filePath);

while ((readLen = inread(buffer)) != -1) {

outwrite(buffer, 0, readLen);

}

outflush();

inclose();

// 把所有小文件都进行写 *** 作后才关闭输出流,这样就会合并为一个文件了

outclose();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

Systemoutprintln("dst 文件路径 : " + dst);

return dst;

}

最后调用上面的方法 mergeFile(this,“要导入的MP3文件路径”,getSDPath(“SD卡内新文件路径”))

Cursor cursor = contextgetContentResolver()query(MediaStoreAudioMediaEXTERNAL_CONTENT_URI, null, null, null, MediaStoreAudioMediaDEFAULT_SORT_ORDER);

//遍历媒体数据库

if(cursormoveToFirst()){

while (!cursorisAfterLast()) {

//歌曲编号

int id = cursorgetInt(cursorgetColumnIndexOrThrow(MediaStoreAudioMedia_ID));

//歌曲id

int trackId=cursorgetInt(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaALBUM_ID));

//歌曲标题

String title = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaTITLE));

//歌曲的专辑名:MediaStoreAudioMediaALBUM

String album = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaALBUM));

//歌曲的歌手名: MediaStoreAudioMediaARTIST

String artist = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaARTIST));

//歌曲文件的路径 :MediaStoreAudioMediaDATA

String url = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaDATA));

//歌曲的总播放时长:MediaStoreAudioMediaDURATION

int duration = cursorgetInt(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaDURATION));

//歌曲文件的大小 :MediaStoreAudioMediaSIZE

Long size = cursorgetLong(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaSIZE));

//歌曲文件显示名字

String disName=cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaDISPLAY_NAME));

cursormoveToNext();

}

cursorclose();

}

以上就是关于android里如何解析音频文件获取标题、专辑、文件名、艺术家全部的内容,包括:android里如何解析音频文件获取标题、专辑、文件名、艺术家、android 如何获取音乐播放时长、怎么往android模拟器的sd卡里写一个mp3文件呢,我用导入为什么导入不进去呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9648022.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存