把文件放在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文件呢,我用导入为什么导入不进去呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)