LG V20 副屏中的日期显示是英文,并且也不符合我们的语言习惯(例如 11:00 AM 应为 上午 11:00),因此我们需要为它添加多语言并纠正日期格式。
程序路径:\system\priv-app\LGSignBoard\LGSignBoard.apk (副屏)
分析程序后得出,获取日期的部分在 \smali\com\lge\signboard\widget\LGDateTimeView.smali 中,调用 LGLocaleDayAndDateFormat.smali 的 getDayAndDate 函数对系统属性中的地区进行判断,若地区为欧洲各国,则根据运营商来提供不同显示方式,若地区为开放地区,则获取资源文件中的翻译,若都不是,则进入 getDayInEnglish 显示英文日期。
因此修改最初引用这个日期的函数,让其不去调用判断,而是调用 getDayInStrings 直接获取资源文件中的翻译:
将 LGDateTimeView.smali 中
invoke-static {v4}, Lcom/lge/signboard/widget/LGLocaleDayAndDateFormat;->getDayAndDate(Landroid/content/Context;)Ljava/lang/String;getDayAndDate 改为 getDayInStrings,与此同时 getDayAndDate 和 getDayInEnglish 不再需要,便可安全删除。
切记,要把 getDayInStrings 的 .method private (私人)改为 .method public(公共);
别忘了在 values-zh-rCN 中添加:
我想你一定注意到了,LG V20 的副屏很容易产生残影,因此可以通过添加空格(转义符:& #160;)改变每天日期的位置来缓解。
若仍觉得“星期”后面的“日期”非常碍眼的话,可以删除以下代码(橘色部分):
完成后还要再移动 \res\layout\basic_information_main.xml 中 com.lge.signboard.widget.AMPMClock (上午下午显示)的位置到时间之前,如果不满意间距也可以调整一下则大功告成。:pswitch_0new-instance v0, Ljava/lang/StringBuilder;invoke-direct {v0}, Ljava/lang/StringBuilder;->()V invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;move-result-object v1const v2, 0x7f05000f # 资源文件中的星期invoke-virtual {v1, v2}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;move-result-object v1invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;move-result-object v0const-string v1, " " # 添加空格invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;move-result-object v0new-instance v1, Ljava/util/Date; # 获取日期中的天invoke-direct {v1}, Ljava/util/Date;->()V invoke-virtual {v1}, Ljava/util/Date;->getDate()Imove-result v1invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;move-result-object v0invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;move-result-object v0goto :goto_0
最后是开启天气显示:
判断是否显示天气的部分在 \smali\com\lge\signboard\widget\WeatherIconView.smali 中:
.method public setVisibility(I)V.locals 2 # 局部变量个数.param p1, "visibility" # I.prologue # 代码开始位置const-string v0, "pplus" # 取字符串 LG V10const-string v1, "ro.product.device"invoke-static {v1}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String; # 获取型号move-result-object v1 # 将上个方法调用后的结果赋值给 v1invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z # 比较
move-result v0 # 将比较结果赋值给 v0
if-nez v0, :cond_0 # 如果结果不等于0则跳转至 cond_0
const/16 v0, 0x8 # v0 赋值为8
invoke-super {p0, v0}, Landroid/widget/ImageView;->setVisibility(I)V
# 输出不显示天气:goto_0
return-void # 结束
:cond_0
invoke-super {p0, p1}, Landroid/widget/ImageView;->setVisibility(I)V
# 输出显示天气
goto :goto_0
事实上天气显示是 LG V10 独有功能,因此将 pplus 改为 elsa(V20)即可开启天气显示。.end method
修改后
注:此更改适用于 UX5(程序版本 5.x) UX6(程序版本 6.x) 系列。
没有评论 :
发表评论