input is not valid Modified UTF-8: illegal start byte 0x**

扫描一个视频时,视频的文件信息中,标题是乱码,导致表面上的重启,具体出错信息为:

W/dalvikvm(17090): JNI WARNING: input is not valid Modified UTF-8: illegal start byte 0xb3
W/dalvikvm(17090):              string: '³ÇÊÐÁÔÈË01'
W/dalvikvm(17090):              in Landroid/media/MediaMetadataRetriever;.extractMetadata:(I)Ljava/lang/String; (NewStringUTF)

最后通过utf8字符判断修正该问题,文件位置frameworks\base\media\jni\android_media_MediaMetadataRetriever.cpp

增加函数IsUTF8,然后在android_media_MediaMetadataRetriever_extractMetadata方法中做出判断,当不为utf-8时返回null

bool IsUTF8(const void* pBuffer, long size)  
{  
    bool IsUTF8 = true;  
    unsigned char* start = (unsigned char*)pBuffer;  
    unsigned char* end = (unsigned char*)pBuffer + size;  
    while (start < end)  
    {  
        if (*start < 0x80) // (10000000): value less then 0x80 ASCII char
        {  
            start++;  
        }  
        else if (*start < (0xC0)) // (11000000): between 0x80 and 0xC0 UTF-8 char
        {  
            IsUTF8 = false;  
            break;  
        }  
        else if (*start < (0xE0)) // (11100000): 2 bytes UTF-8 char
        {  
            if (start >= end - 1)  
                break;  
            if ((start[1] & (0xC0)) != 0x80)  
            {  
                IsUTF8 = false;  
                break;  
            }  
            start += 2;  
        }  
        else if (*start < (0xF0)) // (11110000): 3 bytes UTF-8 char 
        {  
            if (start >= end - 2)  
                break;  
            if ((start[1] & (0xC0)) != 0x80 || (start[2] & (0xC0)) != 0x80)  
            {  
                IsUTF8 = false;  
                break;  
            }  
            start += 3;  
        }  
        else  
        {  
            IsUTF8 = false;  
            break;  
        }  
    }  
    return IsUTF8;  
}

static jobject android_media_MediaMetadataRetriever_extractMetadata(JNIEnv *env, jobject thiz, jint keyCode)
{
    ALOGV("extractMetadata");
    MediaMetadataRetriever* retriever = getRetriever(env, thiz);
    if (retriever == 0) {
        jniThrowException(env, "java/lang/IllegalStateException", "No retriever available");
        return NULL;
    }
    const char* value = retriever->extractMetadata(keyCode);
    if (!value) {
        ALOGV("extractMetadata: Metadata is not found");
        return NULL;
    }
    ALOGV("extractMetadata: value (%s) for keyCode(%d)", value, keyCode);
    if (!IsUTF8(value,strlen(value)))
    {
        return NULL;
    }
    return env->NewStringUTF(value);
}

编译libmedia_jni,之后push进system/lib,删除/data/data/com.android.providers.media文件夹,重启手机即可修正问题。


转自: http://www.xdty.org/1370

当出现*** error 57: illegal address (0x08000000)错误时,可以尝试以下方法解决问题: 1. 参考中的链接,检查Keil MDK调试时可能出现的ERROR 57: illegal address问题的解决方法。该链接提供了一些可能的解决方案,包括检查硬件连接、重新配置调试选项等。 2. 参考中的引用,查看是否有与该错误相关的已知缺陷或问题报告。如果存在相关的缺陷报告,可以尝试升级固件或应用程序,以修复问题。 3. 参考中的引用,检查调试工具的设置。在Option->Utilities->Setting->Debug中,确保"Verify code download"和"Download to flash"的选项都没有勾选。 通过检查硬件连接、升级固件或应用程序、调整调试工具的设置等方法,可以解决*** error 57: illegal address (0x08000000)错误。请根据具体情况选择合适的解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Keil MDK调试时提示ERROR 57: illegal address的解决方法](https://blog.csdn.net/woshi_ziyu/article/details/52039771)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [8-07-14_MegaCLI for linux_windows](https://download.csdn.net/download/weixin_37477226/11022279)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [MDK debug时error 57:illegal address (0x08000000)解决办法](https://blog.csdn.net/daxiazhuluoji/article/details/71548240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值