Android O 修改吉字节为GB
中文状态下,流量使用、存储容量等位置的单位为中文表述:字节、吉字节、兆字节。需要将其改为 B、GB、MB 等。
1.修改流量使用单位
- package/apps/Settings/src/com/android/settings/datausage/DataUsagePreference.java
@Overridepublic void setTemplate(NetworkTemplate template, int subId,NetworkServices services) {mTemplate = template;mSubId = subId;DataUsageController controller = new DataUsageController(getContext());DataUsageController.DataUsageInfo usageInfo = controller.getDataUsageInfo(mTemplate);setSummary(getContext().getString(R.string.data_usage_template,Formatter.formatFileSize(getContext(), usageInfo.usageLevel), usageInfo.period));setIntent(getIntent());}
- frameworks/base/core/java/android/text/format/Formatter.java
private static String formatRoundedBytesResult(@NonNull Context context, @NonNull RoundedBytesResult input) {//add for change 吉字节 to GB final Locale locale = /*localeFromContext(context)*/Locale.US;//add endfinal NumberFormat numberFormatter = getNumberFormatter(locale, input.fractionDigits);if (input.units == MeasureUnit.BYTE || input.units == PETABYTE) {// ICU spells out "byte" instead of "B", and can't format petabytes yet.final String formattedNumber = numberFormatter.format(input.value);return context.getString(com.android.internal.R.string.fileSizeSuffix,formattedNumber, getSuffixOverride(context.getResources(), input.units));} else {return formatMeasureShort(locale, numberFormatter, input.value, input.units);}}/** {@hide} */public static BytesResult formatBytes(Resources res, long sizeBytes, int flags) {final RoundedBytesResult rounded = RoundedBytesResult.roundBytes(sizeBytes, flags);// add for change 吉字节 to GB final Locale locale = /*res.getConfiguration().getLocales().get(0)*/Locale.US;// add endfinal NumberFormat numberFormatter = getNumberFormatter(locale, rounded.fractionDigits);final String formattedNumber = numberFormatter.format(rounded.value);final String units;if (rounded.units == MeasureUnit.BYTE || rounded.units == PETABYTE) {// ICU spells out "byte" instead of "B", and can't format petabytes yet.units = getSuffixOverride(res, rounded.units);} else { // Since ICU does not give us access to the pattern, we need to extract the unit string// from ICU, which we do by taking out the formatted number out of the formatted string// and trimming the result of spaces and controls.final String formattedMeasure = formatMeasureShort(locale, numberFormatter, rounded.value, rounded.units);final String numberRemoved = deleteFirstFromString(formattedMeasure, formattedNumber);units = SPACES_AND_CONTROLS.trim(numberRemoved).toString();}return new BytesResult(formattedNumber, units, rounded.roundedBytes);}
2.修改存储容量单位
- package/apps/Settings/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
// 不同类型标签private static final int[] ITEMS_SHOW_SHARED = new int[] {R.string.storage_detail_apps,R.string.storage_detail_images,R.string.storage_detail_videos,R.string.storage_detail_audio,R.string.storage_detail_system,R.string.storage_detail_other,};...private void addDetailItems(PreferenceGroup category, boolean showShared, int userId) {final int[] itemsToAdd = (showShared ? ITEMS_SHOW_SHARED : ITEMS_NO_SHOW_SHARED);for (int i = 0; i < itemsToAdd.length; ++i) {addItem(category, itemsToAdd[i], null, userId);}}private void addItem(PreferenceGroup group, int titleRes, CharSequence title, int userId) {if (titleRes == R.string.storage_detail_system) {if (mSystemSize <= 0) {Log.w(TAG, "Skipping System storage because its size is " + mSystemSize);return;}if (userId != UserHandle.myUserId()) {// Only display system on current user.return;}}StorageItemPreference item;if (mItemPoolIndex < mItemPreferencePool.size()) {item = mItemPreferencePool.get(mItemPoolIndex);} else {item = buildItem();mItemPreferencePool.add(item);}if (title != null) {item.setTitle(title);item.setKey(title.toString());} else {item.setTitle(titleRes);item.setKey(Integer.toString(titleRes));}item.setSummary(R.string.memory_calculating_size);item.userHandle = userId;addPreference(group, item); //全部添加到布局中++mItemPoolIndex;}
追踪下来可以知道,这些标签都是StorageItemPreference
- package/apps/Settings/src/com/android/settings/deviceinfo/StorageItemPreference.java
public void setStorageSize(long size, long total) {setSummary(FileSizeFormatter.formatFileSize(getContext(),size,MeasureUnit.GIGABYTE,FileSizeFormatter.GIGABYTE_IN_BYTES));if (total == 0) {mProgressPercent = 0;} else {mProgressPercent = (int)(size * PROGRESS_MAX / total);}updateProgressBar();}
更新Summary有调用到FileSizeFormatter中的formatFileSize方法
- package/apps/Settings/src/com/android/settings/utils/FileSizeFormatter.java
private static String formatRoundedBytesResult(@NonNull Context context, @NonNull RoundedBytesResult input) {// add for change 吉字节 to GB final Locale locale = /*localeFromContext(context)*/Locale.US;// add endfinal NumberFormat numberFormatter = getNumberFormatter(locale, input.fractionDigits);return formatMeasureShort(locale, numberFormatter, input.value, input.units);}public static String formatFileSize(@Nullable Context context, long sizeBytes, MeasureUnit unit, long mult) {if (context == null) {return "";}final RoundedBytesResult res = formatBytes(sizeBytes, unit, mult);return bidiWrap(context, formatRoundedBytesResult(context, res));}
Android O 里的网络流量使用、存储容量这两处位置的单位显示并非使用了不同语言的 values,而是使用了 Formatter 类来控制修改。
Android O 修改吉字节为GB相关推荐
- android 手机 吉字节,Java 数据类型05Android开发小典
今天老何与大家分享Java中的数据类型,从一个大家相对感兴趣的话题聊起吧,随着智能手机与网络的普及,大家都办理了流量套餐,每到月底大家也非常关心有没有流量了?费用是如何被扣掉的? 好,让我们带着问题了 ...
- Android8.1 吉字节问题
编译完Android8.1后,发现存储中都是"吉字节"等样式 原来在源码/external/icu/icu4c/source/data/unit目录有个 zh.txt 的文件. 搜 ...
- android APK内存多少字节,Android apk安全测评、应用加固、字节对齐、二次签名(有这一篇就够了)...
本文将通过前言.apk安全测评.应用加固.字节对齐.二次签名.总结共6大版块来阐述 一.前言 评判一个App是否出色,除了看它的性能.体验外,本人认为最为重要的是它的安全性.市面上apk安全评测.加固 ...
- 【Android 应用开发】Android 工程修改包名流程 ( 修改 applicationId | 修改 package | 修改 R 资源引用 | 修改 BuildConfig 引用 )
文章目录 一. Android 工程修改包名流程 二. 修改 applicationId 三. 修改 package 包名 四. AndroidManifest.xml 清单文件组件 五. 修改 R ...
- Android系统修改硬件设备访问权限
Android系统修改硬件设备访问权限 在硬件抽象层模块文件(so)文件中,提供的函数调用open函数来打开设备文件,比如/dev/gpio,如果不修改设备文件/dev/gpio的访问权限,那么应用程 ...
- android 动态修改控件的宽高
今天,简单讲讲android如何动态设置控件的宽高. 这个其实也比较简单,但是之前做的时候出现了问题,代码里设置的宽高是dx,需要先转成dp.下面以RelativeLayout作为例子,简单记录一下. ...
- Android日志[基础篇]二 Android Studio修改LogCat日志的颜色
上一篇提到Android日志的5个级别的日志输出,在logcat里面设置自己喜欢或习惯的颜色,本文不只讲Android Sudio修改logcat的日志颜色. 代码和效果 代码 private voi ...
- Android 系统(123)---MTK android 常用修改点
MTK android 常用修改点 1. *#06#等关键码判断文件 SpecialCharSequenceMgr.java 2.音效 ControlPanelEffect.java 3.版本号修改 ...
- android studio 修改文件后出现类型转换错误
android studio 修改文件后出现类型转换错误,但检查不出毛病,后来as崩溃后,重新启动后,就正常了,百思不得其解
- android修改用户名和密码错误,Android应用开发Android Studio 修改用户名、密码、URL等操作教程...
本文将带你了解Android应用开发Android Studio 修改用户名.密码.URL等操作教程,希望本文对大家学Android有所帮助. 修改用户名.密码: 在AndroidStudio的ter ...
最新文章
- java for 最后_Java的for循环中调用了查询服务,最后只打印了循环的最后一条数据(循环次数)次...
- 地平线:全球估值第一的AI芯片初创公司诞生!
- 如何插入8bit量化节点(tensorflow)
- 百度自动提交链接的php应用seo功能实例
- Archiva 2.2.3 安装运行的时候出现协议版本错误
- 智能化服务器怎么调,怎么设置dns 智能dns设置方法 【图文】
- c# winform 打印 窗体 及 窗体控件内容 的 初级尝试
- python安装osgeo库_python第三方库安装
- MATLAB 插值函数运用 - interp1
- 郭霖:手把手教你实现 App 360 度旋转看车效果
- 数据库原理和应用(2)—— 数据库系统的组成
- PCB板层简介+走线
- 微信公众号服务器配置但没有回调,微信公众号 “服务器配置” 踩坑记
- 天锋w2019_国产手机新选择:天锋W2019横空出世,体验感完全不输三星W2019
- 做一名优秀的软件开发qa_如何成为一名优秀的开发人员
- 微信小程序连接本地服务器(在本地服务器上进行真机测试-微信开发者工具)
- 中富金石老师靠谱分析:2022年国企改革将着力于三个方向
- 进制转换器java程序_java编写简易的进制转换器
- 两根香怎么测15分钟?
- 2020年最新 C# .net 面试题,月薪20K+中高级/架构师必看(二)