在android中利用音乐播放器播放音乐时,有时会发现歌曲名称,歌手名称,专辑名称等会有乱码,其实这是在音乐文件扫描的过程中解码不正确造成的,采用下面的代码应该可以修正大部分类似的问题:

in MediaScannerClient.cpp

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);...}
其中+号代表要添加的代码,-号代表要删除的代码。

更多相关文章

  1. Android中Java和JavaScript交互
  2. Android的五大布局
  3. [Android1.6]继承BaseAdapter为GridView设置数据时设置setLayout
  4. Android中WebView和JavaScript通信
  5. 【Android】Android中Intent的用法总结
  6. Android有用代码片段(三)
  7. android退出应用程序
  8. Android(安卓)源代码编译前后的目录结构
  9. Android(安卓)通过代码实现控制数据网络的开关(仅适用于5.0以上)

随机推荐

  1. [置顶] Android OOM与 leak window
  2. android实现discuz论坛的登录
  3. Android以及ios相关的测试 心得
  4. 蜂窝教育:Android影响在扩大,现在需把握先
  5. android 4.2.1 一种高效log打开方式
  6. 01 Android应用的构成 四大组件 Activity
  7. Android设备唯一码的获取
  8. Lenovo LePhone S2 不僅運行 Android,也將
  9. android View类详解。
  10. Google 内部演示文稿建议让部分合作商可