android读取指定目录下音乐文件并显示在xml中

android读取指定目录下音乐文件并显示在xml中,第1张

mData = new ArrayList<ChoseMusicBean>();

File f = new File(DEFAULT_SOUND_PATH);

File[] files = flistFiles();

if (files != null) {

    int count = fileslength;

    for (int i = 0; i < count; i++) {

        File file = files[i];

        ChoseMusicBean bean = new ChoseMusicBean(filegetName());

        mDataadd(bean);

    }

}

Adapter adapter=new adapter(context,mData);

listviewsetAdapter(adapter);

DEFAULT_SOUND_PATH是音乐文件路径

ContentResolver mResolver = getContentResolver();

Cursor cursor = mResolverquery(MediaStoreAudioMediaEXTERNAL_CONTENT_URI, null, null, null, MediaStoreAudioMediaDEFAULT_SORT_ORDER);

int i = 0;

int cursorCount = cursorgetCount();

if (cursorCount >0 )

{

cursormoveToFirst();

while (i < cursorCount)

{

//歌曲文件的路径 :MediaStoreAudioMediaDATA

url = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaDATA));

if(urltoLowerCase()indexOf("指定的歌曲路径") > 0)

{

}

i++;

cursormoveToNext();

}

cursorclose();

}

安卓系统在开机的时候就会自动检测SD卡的文件,并将音乐文件搜集生成一个数据库文件。我们只需访问数据库表中的信息就能得到所需的文件

代码如下:

<span style="font-size:14px; white-space: pre;"> </span><span style="font-size:14px;">// 获取所有歌曲

Cursor cursor = crquery(

MediaStoreAudioMediaEXTERNAL_CONTENT_URI, null, null,

null, MediaStoreAudioMediaDEFAULT_SORT_ORDER);</span>

得到cursor对象就能访问cursor里的媒体资源

Intent intent=new Intent(IntentACTION_PICK,androidproviderMediaStoreAudioMediaEXTERNAL_CONTENT_URI); //打开音乐库

startActivityForResult(intent, reqCode);

这是抽取专辑的方法,扫描歌曲的时候自己把歌曲的id和专辑的id传进去就能获取

private static final Uri sArtworkUri = Uri

parse("content://media/external/audio/albumart");

/

将MP3里读取出来

@param context

@param songid

@param albumid

@return

/

public static Bitmap getMusicBitemp(Context context, long songid,

long albumid) {

Bitmap bm = null;

// 专辑id和歌曲id小于0说明没有专辑、歌曲,并抛出异常

if (albumid < 0 && songid < 0) {

throw new IllegalArgumentException(

"Must specify an album or a song id");

}

try {

if (albumid < 0) {

Uri uri = Uriparse("content://media/external/audio/media/"

+ songid + "/albumart");

ParcelFileDescriptor pfd = contextgetContentResolver()

openFileDescriptor(uri, "r");

if (pfd != null) {

FileDescriptor fd = pfdgetFileDescriptor();

bm = BitmapFactorydecodeFileDescriptor(fd);

}

} else {

Uri uri = ContentUriswithAppendedId(sArtworkUri, albumid);

ParcelFileDescriptor pfd = contextgetContentResolver()

openFileDescriptor(uri, "r");

if (pfd != null) {

FileDescriptor fd = pfdgetFileDescriptor();

bm = BitmapFactorydecodeFileDescriptor(fd);

} else {

return null;

}

}

} catch (FileNotFoundException ex) {

}

return bm;

}

另一种:

// 查找sdcard卡上的所有歌曲信息

public List> getMultiData() {

ArrayList> musicList = new ArrayList>();

// 加入封装音乐信息的代码

// 查询所有歌曲

ContentResolver musicResolver = thisgetContentResolver();

Cursor musicCursor = musicResolverquery(

MediaStoreAudioMediaEXTERNAL_CONTENT_URI, null, null, null,

null);

int musicColumnIndex;

if (null != musicCursor && musicCursorgetCount() > 0) {

for (musicCursormoveToFirst(); !musicCursorisAfterLast(); musicCursor

moveToNext()) {

Map musicDataMap = new HashMap();

Random random = new Random();

int musicRating = Mathabs(randomnextInt()) % 10;

musicDataMapput("musicRating", musicRating);

// 取得音乐播放路径

musicColumnIndex = musicCursor

getColumnIndex(MediaStoreAudioAudioColumnsDATA);

musicPath = musicCursorgetString(musicColumnIndex);

musicDataMapput("musicPath", musicPath);

// 取得音乐的名字

musicColumnIndex = musicCursor

getColumnIndex(MediaStoreAudioAudioColumnsTITLE);

musicName = musicCursorgetString(musicColumnIndex);

musicDataMapput("musicName", musicName);

// 取得音乐的专辑名称

musicColumnIndex = musicCursor

getColumnIndex(MediaStoreAudioAudioColumnsALBUM);

musicAlbum = musicCursorgetString(musicColumnIndex);

musicDataMapput("musicAlbum", musicAlbum);

// 取得音乐的演唱者

musicColumnIndex = musicCursor

getColumnIndex(MediaStoreAudioAudioColumnsARTIST);

musicArtist = musicCursorgetString(musicColumnIndex);

musicDataMapput("musicArtist", musicArtist);

// 取得歌曲对应的专辑对应的Key

musicColumnIndex = musicCursor

getColumnIndex(MediaStoreAudioAudioColumnsALBUM_KEY);

musicAlbumKey = musicCursorgetString(musicColumnIndex);

String[] argArr = { musicAlbumKey };

ContentResolver albumResolver = thisgetContentResolver();

Cursor albumCursor = albumResolverquery(

MediaStoreAudioAlbumsEXTERNAL_CONTENT_URI, null,

MediaStoreAudioAudioColumnsALBUM_KEY + " = ",

argArr, null);

if (null != albumCursor && albumCursorgetCount() > 0) {

albumCursormoveToFirst();

int albumArtIndex = albumCursor

getColumnIndex(MediaStoreAudioAlbumColumnsALBUM_ART);

musicAlbumArtPath = albumCursorgetString(albumArtIndex);

if (null != musicAlbumArtPath

&& !""equals(musicAlbumArtPath)) {

musicDataMapput("musicAlbumImage", musicAlbumArtPath);

} else {

musicDataMapput("musicAlbumImage",

"file:///mnt/sdcard/albjpg");

}

} else {

// 没有专辑定义,给默认

musicDataMapput("musicAlbumImage",

"file:///mnt/sdcard/albjpg");

}

musicListadd(musicDataMap);

}

}

return musicList;

}

以上就是关于android读取指定目录下音乐文件并显示在xml中全部的内容,包括:android读取指定目录下音乐文件并显示在xml中、Android 怎么读取指定目录下的音乐文件、android音乐播放器怎么搜索SD卡上的音乐文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9748467.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存