gpt4 book ai didi

android - 如何将 mediastore.audio 用于专辑和艺术家信息并将其添加到自定义 ListView 中?

转载 作者:行者123 更新时间:2023-11-29 01:51:04 25 4
gpt4 key购买 nike

首先我是一个新手,这里是在 customlost 中添加歌曲名称的代码,我需要的只是一些使用 mediastore 的功能(我试过 metadataretriever 但应用程序停止响应)这样我也可以添加它们....

公共(public)类 FragmentSongs 扩展 fragment {

    private MediaPlayer mp =new MediaPlayer();



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_a, container, false);
ListView SngList = (ListView) view.findViewById(R.id.SongList);
File f=new File("/sdcard");
ArrayList<SongDetails> Songinfo = getSongsFromDirectory(f);
if (Songinfo.size()>0){
SngList.setAdapter(new CustomAdapter(Songinfo));
return view;
}
else return null;

}


public ArrayList<SongDetails> getSongsFromDirectory(File f)
{// MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();

ArrayList<SongDetails> songs = new ArrayList<SongDetails>();
if (!f.exists() || !f.isDirectory())

{
return songs;
}
File[] files = f.listFiles(new Mp3Filter());
for(int i=0; i<files.length; i++)
{

if (files[i].isFile()){
// metaRetriever.setDataSource(files[i].getName());
//metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
SongDetails detail=new SongDetails();
detail.setIcon(R.drawable.ic_launcher);
String fileName = files[i].getName();
detail.setSong(files[i].getName());

detail.setArtist(files[i].getName());
detail.setAlbum(files[i].getName());
songs.add(detail);
}else if (files[i].isDirectory()){
songs.addAll(getSongsFromDirectory(files[i]));
}

}

return songs;



} }
class Mp3Filter implements FileFilter{
public boolean accept(File file){
return (file.isDirectory()||file.getName().endsWith(".MP3")|| file.getName().endsWith(".mp3"));
}

最佳答案

不确定确切的问题是什么,但如果您想将歌曲标题添加到自定义列表,为什么不使用这样的东西

    final String track_id = MediaStore.Audio.Media._ID; 
final String track_no =MediaStore.Audio.Media.TRACK;
final String track_name =MediaStore.Audio.Media.TITLE;
final String artist = MediaStore.Audio.Media.ARTIST;
final String duration = MediaStore.Audio.Media.DURATION;
final String album = MediaStore.Audio.Media.ALBUM;
final String composer = MediaStore.Audio.Media.COMPOSER;
final String year = MediaStore.Audio.Media.YEAR;
final String path = MediaStore.Audio.Media.DATA;
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
public Cursor getTrackTrackcursor(Context context, Cursor cursor)
{
// gets all tracks
ContentResolver cr = context.getContentResolver();
final String[]columns={track_id, track_no, artist, track_name,album, duration, path, year, composer};
cursor = cr.query(uri,columns,null,null,null);
return cursor;
}

希望对你有帮助

关于android - 如何将 mediastore.audio 用于专辑和艺术家信息并将其添加到自定义 ListView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18037190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com