首页 > 代码库 > Cursor扫描本地音乐文件,英文名也出现乱码,怎么解决。
Cursor扫描本地音乐文件,英文名也出现乱码,怎么解决。
问题描述
扫描本地音乐文件并放入List的代码如下:
模拟器内的音乐文件只有一个,而且是文件名全英,如图:
在模拟器里测试生成列表,显示全部为问号的乱码,如图:
用真机来测试,有些是乱码,有些能正常显示(有些中文也能正常显示),如图:
请问应该怎么解决这个乱码问题,网上找的方法不管用,望各位大神出手相助了! 解决方案1
getListByLocal函数里最后需要执行cursor.close(),不然就可能出现乱码(这个和cursor内部的内存管理有关系)。 解决方案2
你用模拟器测试下,难道你的英文是全角的
扫描本地音乐文件并放入List的代码如下:
public List<LocalMp3> getListByLocal() { Cursor cursor = getContentResolver().query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); List<LocalMp3> localMp3s = new ArrayList<LocalMp3>(); for (int i = 0; i < cursor.getCount(); i++) { LocalMp3 localMp3 = new LocalMp3(); cursor.moveToNext(); String title = cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.TITLE)); String artist = cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.ARTIST)); long duration = cursor.getLong(cursor .getColumnIndex(MediaStore.Audio.Media.DURATION)); String mp3url = cursor.getString(cursor .getColumnIndex(MediaStore.Audio.Media.DATA)); int isMusic = cursor.getInt(cursor .getColumnIndex(MediaStore.Audio.Media.IS_MUSIC)); // 判断是否音乐 if (isMusic != 0) { localMp3.setTitle(title); localMp3.setArtist(artist); localMp3.setDuration(duration); localMp3.setMp3url(mp3url); localMp3s.add(localMp3); } } return localMp3s; }
模拟器内的音乐文件只有一个,而且是文件名全英,如图:
在模拟器里测试生成列表,显示全部为问号的乱码,如图:
用真机来测试,有些是乱码,有些能正常显示(有些中文也能正常显示),如图:
请问应该怎么解决这个乱码问题,网上找的方法不管用,望各位大神出手相助了! 解决方案1
getListByLocal函数里最后需要执行cursor.close(),不然就可能出现乱码(这个和cursor内部的内存管理有关系)。 解决方案2
你用模拟器测试下,难道你的英文是全角的
Cursor扫描本地音乐文件,英文名也出现乱码,怎么解决。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。