音乐播放器的乱码问题!!

黑白_hb 超级会员 黑白_hb 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近在做一个播放器玩玩。这个乱码的问题得不到解决。我是用的MediaStore。

这是我的代码。

ContentResolver cr = c.getContentResolver();
Cursor cursor = cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

if (cursor != null && cursor.getCount() > 0) {

for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor
.moveToNext()) {

long id = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media._ID));
// 歌曲名
String title = cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));

// 歌手名
String singer = cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
// 歌曲长度
int time = cursor
.getInt(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
// 歌曲文件名字
String name = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));

String suffix = name
.substring(name.length() - 4, name.length());
// 歌曲文件的全路径
String url = cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));


File file = new File(url);
BufferedReader reader;
FileInputStream fis;
try {
fis = new FileInputStream(file);
BufferedInputStream in = new BufferedInputStream(fis);
in.mark(4);
byte[] first3bytes = new byte[3];
in.read(first3bytes);
in.reset();

if (first3bytes[0] == (byte) 0xEF
&& first3bytes[1] == (byte) 0xBB
&& first3bytes[2] == (byte) 0xBF) {
charset = "utf-8";

} else if (first3bytes[0] == (byte) 0xFF

&& first3bytes[1] == (byte) 0xFE) {
charset = "unicode";
Toast.makeText(c, charset, 1).show();
} else if (first3bytes[0] == (byte) 0xFE

&& first3bytes[1] == (byte) 0xFF) {
charset = "utf-16be";
} else if (first3bytes[0] == (byte) 0xFF

&& first3bytes[1] == (byte) 0xFF) {
charset = "utf-16le";
} else {
charset = "GBK";
}

} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

// 专辑名
String album = cursor.getString(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
try {

singer = new String(singer.getBytes(), charset);
title = new String(title.getBytes(), charset);
album = new String(album.getBytes(), charset);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long albumid = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));

if (url.endsWith(".mp3") || url.endsWith(".MP3")) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("ID", id);
map.put("TITLE", title);
map.put("SINGER", singer);
map.put("TIME", time);
map.put("NAME", name);
map.put("SUFFIX", suffix);
map.put("URL", url);
map.put("ALBUM", album);
map.put("ALBUMID", albumid);
musicdata.add(map);
}
}

在网上找的几种方式都试过。有作用,但感觉都不彻底。还有的就是用播放器转什么的。那个太麻烦。有没有简单有效的方法。
...全文

相关推荐

Ubuntu音乐播放器Rhythmbox中文乱码解决及OSDLyrics安装方法

Ubuntu音乐播放器Rhythmbox中文乱码的解决方法,OSDLyrics安装与使用

zgjteacher

解决ubuntu下中文乱码问题终版.pdf

解决ubuntu下中文乱码问题终版.pdf

xhr131452007

ubuntu(vim,gedit等)乱码问题的解决

解决ubuntu下使用windows资源中文乱码的问题

Real-Woong

音乐乱码去除器

面就小米手机MIUI歌曲乱码这个问题先分析下原因:   ID3标签信息还分ID3v1和ID3v2,小米手机MIUI自带的音乐播放器能良好支持ID3v2标签,但对ID3v1的识别却不到位,经常出现无法识别的问题,并且对简体中文采用的文本编码方式GB2312(ANSI)支持不佳,因为西文字符默认编码方式一般是UTF-8。   找到了小米手机MIUI歌曲乱码原因下,咱们就要对症下药,ID3V1标签信息和简体中文采用的文本编码支持不好咱就给它转换呗。把每首歌曲的的标签保持为ID3V2不就好了?改ID3标签信息的软件很多,小米手机MIUI音乐播放器本身就有修改ID3信息的功能,当然如果乱码的歌曲比较多的话就不适用了。   这时我们就来解决小米手机歌曲乱码的这个问题,需要在电脑上使用软件来修改了。可以修改ID3的播放器很多,比如:千千静听,Winamp等等。下面我给大家介绍用“千千静听”来修改:   小米手机解决歌曲乱码问题第一步,需要修改ID3信息的歌曲导入到千千静听里面,然

summanaes

晴天音乐播放器

晴天音乐播放器源码服务端很简单,相信给个截图大家就明白了。请自己去搭吧,tomcat很简单的。搭好后修改源码里Constant里的IP就OK了。所有与编码有关的地方都请设置为utf-8,避免乱码,例如eclipse工作空间。

weixin_38679178
评论 10
收藏 已收藏
分享
返回顶部
黑白_hb 超级会员
Android 80,489 成员 91,375 内容