Cursor扫描本地音乐文件,英文名也出现乱码,怎么解决。

问题描述

扫描本地音乐文件并放入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

你用模拟器测试下,难道你的英文是全角的

时间: 2024-10-18 11:19:25

Cursor扫描本地音乐文件,英文名也出现乱码,怎么解决。的相关文章

Android开发:扫描本地音乐文件

一.前言 本来觉得so easy,真是没想到,还搞了老半天,搞的我大汗淋漓,要拍桌子摔键盘了. 本想实现的功能是: 通过网易云音乐/百度音乐/QQ音乐/酷狗音乐中一个API,通过关键词/歌手/歌词来搜索相关歌曲信息,然后在线播放.下载到本地,不过目前来看,使用API还是有一点问题.通过浏览器访问,问题不大,例如下图: 但是想通过手机访问的时候,问题就出现了,同样的参数,结果很不一样,而且基本搜不到自己想要的,后来换做通过自己的服务器去访问,还是搜不到,后来查了一下资料,暂时也没解决.于是,目前就

扫描IPHONE本地音乐文件,获得音乐名,歌手名代码示例

//扫描本地音乐文件,返回艺术家列表 需要库MediaPlayer.framework -(NSArray*) findArtistList { NSMutableArray *artistList = [[NSMutableArray alloc]init]; MPMediaQuery *listQuery = [MPMediaQuery playlistsQuery];//播放列表 NSArray *playlist = [listQuery collections];//播放列表数组 fo

php操作csv文件导入mysql时中文乱码的解决办法

用网上通用的方法读取并上传csv文件内容进入mysql数据库中时,中文显示乱码,即使对数据用iconv函数转码后仍然乱码,这时可以用setlocale()函数: 这个函数经查阅是配置地域信息用的,在读取和写入csv数据前先用此函数进行定义,比如我的csv文件是无BOM的UTF-8格式,就先用如下函数进行定义: setlocale(LC_ALL, 'zh_CN.UTF8′); 然后再用iconv函数对数据内容进行转码入库等后续操作.

mysql通过sql文件导入数据时出现乱码的解决办法

首先在新建数据库时一定要注意生成原数据库相同的编码形式,如果已经生成可以用phpmyadmin等工具再整理一次,防止数据库编码和表的编码不统一造成乱码. 方法一: 通过增加参数 –default-character-set = utf8 解决乱码问题 mysql -u root -p password < path_to_import_file –default-character-set = utf8 方法二: 在命令行导入乱码解决 1. use database_name; 2. set n

使用AVAudioPlayer播放音乐文件无声音

使用AVAudioPlayer播放本地音乐文件. 1.声明全局AudioPlayer变量: @property(nonatomic,strong)AVAudioPlayer *movePlayer ; 2.初始化变量并播放: NSString *tmp=[[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"a.mp3"]; //NSString * tmp = [[NSBundle mainBundle

【PHP】PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数)

[PHP]PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数) 前言 由于业务需要,我们需要从业务中汇总数据,并生成Excel文件. 思路是这样的 PHP要导出Excel表格文件->找一个好用的第三方库吧->在Composer的Packages里找一个吧->PHPExcel这么多收藏,就它了! PHPExcel 概述 PHPExcel is a library written in pure PHP and providing a set of classes th

手机影音第十四天,本地音乐列表的展示与播放(利用视频播放的布局)

代码已经托管到码云,有兴趣的小伙伴可以下载看看 https://git.oschina.net/joy_yuan/MobilePlayer 效果图: Android系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户.当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如audio,video,图片等,将相应的信息放到定义好的数据库表格中.在这个

实现本地音乐选择,播放,带可拖动进度条

需求:项目需要实现扫描本地sdcard上的所有音乐.并且可以进行播放,带可拖动进度条. 实现步骤:1.每个音乐文件在数据中有一条记录,开启一个线程查找数据库找出所有音乐文件,根据后缀名进行过滤,用handle通知ListView展示 2.ListView每一行设置单击事件,选中的那首歌曲进行播放. 3.ListView每一行都有seekBar,根据item选中进行显示隐藏. 1.activity文件  SelectMusicActivity.java public class SelectMus

常用文件扩展名

http://baike.baidu.com/view/579392.htm ISO:镜像文件 RAR:压缩包 html:网页 zip:压缩包 exe:安装包 pdf:pdf文档 rm:视频文件 avi:视频文件 tmp:临时文件 xls:excel工作表 mdf:虚拟光驱镜像文件 txt:记事本 doc:word文档 MID:声卡声乐文件 文件类型 扩展名及打开方式 文档文件 txt(所有文字处理软件或编辑器都可打开).doc(word及wps等软件可打开).hlp(adobe acrobat