Android 音乐乱码问题修改

对于Android音乐播放器的音乐人 ,专辑,音乐名字显示乱码的修改做了下总结:

方法一:在frameworks\base\media\java\android\media\MediaScanner.java中修改:函数handleStringTag

在这个函数中加上字符编码的转换;

<span style="font-family:KaiTi_GB2312;font-size:18px;">/*add by tanfusheng @20150110 start */
        private boolean isEncoding(String value,String code) throws UnsupportedEncodingException{
            return value.equals(new String(value.getBytes(code),code));
        }
         /*add by tanfusheng @20150110 end */
        public void handleStringTag(String name, String value) {
         /*add by tanfusheng @20150110  start */
            try{
                if(isEncoding(value,"ISO-8859-1")){
                    value = new String(value.getBytes("ISO-8859-1"),"GBK");
                }
            }catch(UnsupportedEncodingException e){
                e.printStackTrace();
            }
             /*add by tanfusheng @20150110  end */</span>

即可

方法二:在frameworks\av\media\libmedia\MediaScannerClient.cpp中修改:

<span style="font-family:KaiTi_GB2312;font-size:18px;">void MediaScannerClient::endFile()
{
if (mLocaleEncoding != kEncodingNone) {
int size = mNames->size();
+ int count = 0;
uint32_t encoding = kEncodingAll;
uint32_t tmpEncoding = kEncodingAll;
uint32_t srcEncoding = kEncodingNone;

for (int i = 0; i < mNames->size(); i++) {
tmpEncoding = possibleEncodings(mValues->getEntry(i));
// If no multibyte encoding is detected or GBK is the only possible multibyte encoding, just ignore
- if( (kEncodingNone != tmpEncoding) && (kEncodingCP1252 != tmpEncoding)
- && ((kEncodingGBK | kEncodingCP1252) != tmpEncoding) ) {
- encoding &= tmpEncoding;
+ if( (kEncodingNone == tmpEncoding) || ((kEncodingGBK | kEncodingCP1252) == tmpEncoding) ) {
+ continue;
}
+
+ if( kEncodingCP1252 == tmpEncoding ) {
+ ++count;
+ continue;
+ }
+
+ encoding &= tmpEncoding;
LOGV("value: %s, tmpEncoding: %x\n", mValues->getEntry(i), tmpEncoding);
}
+
+ if(count >= 2) {
+ encoding = kEncodingAll;
+ }
LOGV("possibleEncodings: %x\n", encoding);
...
}</span>

其中+号代表要添加的代码,-号代表要删除的代码。

希望遇到此乱码的问题可以用得上,如果这样改了还会乱码,那就是单首音乐的问题了,就得用千千静听去修改那首音乐的编码方式了,至于方法可以百度到的。

时间: 2024-10-18 12:42:08

Android 音乐乱码问题修改的相关文章

android音乐播放器开发 SweetMusicPlayer 智能负载直插式歌词

在一份书面的使用MediaPlayer播放音乐, http://blog.csdn.net/huweigoodboy/article/details/39862773.假设没有本地歌词怎么办?如今来将一下载入在线歌词.好了,还是用那张图. 在实现这个功能的时候,lz尝试过baidu api,歌词迷api,后来选用了歌词迷api.尽管还是资源不全.并且还有非常多错误. 特别头疼的是有时候歌词竟然不分行.解析起来简直难受. 歌词迷api歌词查询地址:http://geci.me/api/lyric/

android音乐播放器开发教程

android音乐播放器开发教程 android音乐播放器开发教程,布布扣,bubuko.com

【转】android 自定义ViewPager,修改原动画

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记 得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开 始让ViewPager来做.时间长了,ViewPager的切换效果觉得枯燥,形成了审美疲劳~~我们需要改变,今天教大家如何改变ViewPager 切换时的效果,实现个性化的图片切换~~ 看一下这样效果的图片切换: 是

[Android]音乐播放器总结

1. MediaPlayer要播放的文件主要包括3个来源:a. 用户在应用中事先自带的resource资源例如:mp = MediaPlayer.create(this, R.raw.test);b. 存储在SD卡或其他文件路径下的媒体文件例如:mp.setDataSource("/sdcard/test.mp3");c. 网络上的媒体文件例如:mp.setDataSource("http://www.citynorth.cn/music/confucius.mp3"

Android项目编码的批量修改(GBK转UTF-8)(转载)

由于项目早期Android项目选择GBK编码,一直也没时间改.为了统一编码,打算把整个项目转变成UTF-8.传统一个一个文件修改编码,太慢太笨拙,尝试了批量改的效果不太好,项目报错.最后,找到 eclipse 有一个插件,可以修改,分享一下整个过程.  1.下载com.lifesting.tool.encoding_1.0.0.jar(http://download.csdn.net/detail/achunb604/6235849).  2.将插件com.lifesting.tool.enco

Android 时间控件修改生日

private class TextView_persinal_birth_onClick implements View.OnClickListener {        @Override        public void onClick(View v) {            DatePickerDialog.OnDateSetListener dateSetListener=new DatePickerDialog.OnDateSetListener() {            

自编Win8风格Android音乐播放器应用源码(单机版)

用闲暇的两天时间,研究编写了一个类Win8风格的android音乐播放器,实现了大部分基本功能.下面看具体描述: 基本实现功能:注意事项:Android系统版本须在2.2以上,保证手机安装有SD卡(部分图标来至qq音乐和百度音乐)界面组成:欢迎界面:淡入,随机图片 由于代码不少,所以在这里贴出来也不太现实,嗯,那就上链结吧,请各位到源码天堂网站上下载吧: http://code.662p.com/view/4733.html 主界面:4个tab标签页,4宫格: --  歌曲列表界面:从sd卡中扫

强大的Android参数模拟器,自由修改手机型号、SDK版本号等信息

很多人都知道安卓模拟器,在电脑上模拟手机的模拟器,今天我们试下另一种模拟器,并不是只能在电脑上的模拟器,而是可以在手机真机上运行的模拟器,可以让手机模拟出新的参数,比如手机型号,手机安卓系统信息比如sdk版本等等,这也是之前在群里一个qq好友分享的一个软件琢石模拟器,后来用了几个月了,都一直用着,做很多项目都需要用到,琢石模拟器软件的使用很方便,都是一键完成的,而且没有重启手机的繁琐步骤,这也是我们团队一直用的原因. 在使用过程中如果对生成的参数不满意,也可以自由的对每个参数进行修改,当然包括地

Android SDK 更新时修改hosts文件仍然无法更新,可试试这个方法……

Android SDK 更新时修改hosts文件仍然无法更新,此时必定万分蛋疼.在hosts文件中更换了各种ip,仍然解决不了!!!!!!!!!!!!!!? 第一步: 打开此软件,等待服务器连接 第二步: 连接成功后切换到这个选项卡 注:地址 127.0.0.1         端口 8580 第三步: 在Eclipse中打开SDK Manager,或找到SDK目录下的SDK  Manager.exe 打开之后显示SDK更新列表界面: 注:尚未成功,此时需要设置代理端口 第四步: 打开 Tool