Android(SpreadTurm)多语言版本电话录音系统报错
2012-11-23 11:01
387 查看
Android(SpreadTurm)多语言版本电话录音系统报错
法语,印尼语,士耳其
【原因:】
从log里面分析com.android.phone进程重启。
如下log分析:
11-20 17:20:21.256 410 1408 E AndroidRuntime: java.lang.IllegalArgumentException: Unknown pattern character 'A'
11-20 17:20:21.256 410 1408 E AndroidRuntime: at java.text.SimpleDateFormat.validateFormat(SimpleDateFormat.java:267)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:315)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:368)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:252)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at com.android.phone.InCallScreen.addToMediaDB(InCallScreen.java:5835)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at com.android.phone.InCallScreen.saveSample(InCallScreen.java:5746)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at com.android.phone.InCallScreen.enableRecorder(InCallScreen.java:4211)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at com.android.phone.InCallScreen$18.run(InCallScreen.java:4191)
可知,在InCallScreen.java文件中,addToMediaDB函数中的
SimpleDateFormat formatter = new SimpleDateFormat(res.getString(R.string.audio_db_title_format));设置有问题,继续跟进发现是SimpleDateFormat.java中validateFormat函数“throw new IllegalArgumentException("Unknown pattern character '" + format + "'");”
原因是由于static final String PATTERN_CHARS = "GyMdkHmsSEDFwWahKzZLc";中没有匹配字符"A";
土耳其语的时间格式为“yyyy-AA-gg SS:dd:ss”,所以会出现问题。
SimpleDateFormat.java中validateFormat函数“throw new IllegalArgumentException("Unknown pattern character '" + format + "'");”
原因是由于static final String PATTERN_CHARS = "GyMdkHmsSEDFwWahKzZLc"; 只支持上述字符的时间格式匹配。其余没有的字符作为将来扩展保留使用,这个是国际标准。
1. 印地语:
/values-in/strings.xml:820: <string name="audio_db_title_format"><xliff:g id="format">tttt-BB-hh JJ:mm:dd</xliff:g></string>
可以发现t、B、J 都没有在 PATTERN_CHARS中出现
2. 土耳其语:
/res/values-tr/strings.xml:931: <string name="audio_db_title_format"><xliff:g id="format">yyyy-AA-gg SS:dd:ss</xliff:g></string>
可以发现A、g 都没有在 PATTERN_CHARS中出现
3. 法语
/res/values-fr/strings.xml:939: <string name="audio_db_title_format"><xliff:g id="format">aaaa-MM-jj HH:mm:ss</xliff:g></string>
可以发现a、j 都没有在 PATTERN_CHARS中出现
【修改:】
解决方案:
参照/res/values/strings.xml:1504: <string name="audio_db_title_format"><xliff:g id="format">yyyy-MM-dd HH:mm:ss</xliff:g></string>
可以将所有的格式修改为yyyy-MM-dd HH:mm:ss,问题解决。
法语,印尼语,士耳其
【原因:】
从log里面分析com.android.phone进程重启。
如下log分析:
11-20 17:20:21.256 410 1408 E AndroidRuntime: java.lang.IllegalArgumentException: Unknown pattern character 'A'
11-20 17:20:21.256 410 1408 E AndroidRuntime: at java.text.SimpleDateFormat.validateFormat(SimpleDateFormat.java:267)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:315)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:368)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:252)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at com.android.phone.InCallScreen.addToMediaDB(InCallScreen.java:5835)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at com.android.phone.InCallScreen.saveSample(InCallScreen.java:5746)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at com.android.phone.InCallScreen.enableRecorder(InCallScreen.java:4211)
11-20 17:20:21.256 410 1408 E AndroidRuntime: at com.android.phone.InCallScreen$18.run(InCallScreen.java:4191)
可知,在InCallScreen.java文件中,addToMediaDB函数中的
SimpleDateFormat formatter = new SimpleDateFormat(res.getString(R.string.audio_db_title_format));设置有问题,继续跟进发现是SimpleDateFormat.java中validateFormat函数“throw new IllegalArgumentException("Unknown pattern character '" + format + "'");”
原因是由于static final String PATTERN_CHARS = "GyMdkHmsSEDFwWahKzZLc";中没有匹配字符"A";
土耳其语的时间格式为“yyyy-AA-gg SS:dd:ss”,所以会出现问题。
SimpleDateFormat.java中validateFormat函数“throw new IllegalArgumentException("Unknown pattern character '" + format + "'");”
原因是由于static final String PATTERN_CHARS = "GyMdkHmsSEDFwWahKzZLc"; 只支持上述字符的时间格式匹配。其余没有的字符作为将来扩展保留使用,这个是国际标准。
1. 印地语:
/values-in/strings.xml:820: <string name="audio_db_title_format"><xliff:g id="format">tttt-BB-hh JJ:mm:dd</xliff:g></string>
可以发现t、B、J 都没有在 PATTERN_CHARS中出现
2. 土耳其语:
/res/values-tr/strings.xml:931: <string name="audio_db_title_format"><xliff:g id="format">yyyy-AA-gg SS:dd:ss</xliff:g></string>
可以发现A、g 都没有在 PATTERN_CHARS中出现
3. 法语
/res/values-fr/strings.xml:939: <string name="audio_db_title_format"><xliff:g id="format">aaaa-MM-jj HH:mm:ss</xliff:g></string>
可以发现a、j 都没有在 PATTERN_CHARS中出现
【修改:】
解决方案:
参照/res/values/strings.xml:1504: <string name="audio_db_title_format"><xliff:g id="format">yyyy-MM-dd HH:mm:ss</xliff:g></string>
可以将所有的格式修改为yyyy-MM-dd HH:mm:ss,问题解决。
相关文章推荐
- Android开发实用技巧:判断当前系统语言版本
- Android 最全适配不同语言、屏幕、系统版本及常见适配方法
- 修改 Android 系统默认语言版本
- android service 例子(电话录音和获取系统当前时间)
- 修改 Android 系统默认语言版本
- 高版本Android如何利用反射调用系统隐藏的远程服务拦截来电
- Android电话系统之-rild
- 生成release版本的Android系统 --签名
- android系统信息(内存、cpu、sd卡、电量、版本)获取
- Android核心分析(19)----电话系统之GSMCallTacker
- Android 系统名字、版本、API level的对应关系
- 这篇文章给大家介绍Android开发四大组件之实现电话拦截和电话录音,涉及到android四大基本组件在程序中的应用,对android四大基本组件感兴趣的朋友可以参考下本篇文章
- Android 获取当前系统语言及地区
- android 利用反射获取当前系统sdk版本等属性
- Android使用系统自带的audioreorder和mediaplayer进行录音和播放,外加进度条的滚动!
- centos6.5版本改系统语言成中文简体
- Android问题-新电脑新系统WIN764位上安装简版本的XE8提示“Unit not found: 'System'”
- 【Android学习】调用系统短信、电话
- 刚旭电话录音系统
- 第十三篇 Android 系统电话管理机制二