android 9.0 10.0 修改默认字体大小

参考别人的代码,直接修改arrarys.xml和Configuration.java的默认值是没有效果的,也没overlay的文件。

后面想到,这个默认值是存储在Settings.System.FONT_SCALE,那就直接存储在这里面好了。重新编译代码之后生效。

 

代码如下

 

diff --git a/frameworks/base/core/java/android/content/res/Configuration.java b/frameworks/base/core/java/android/content/res/Configuration.java
old mode 100644
new mode 100755
index 193e56e..96e7527
--- a/frameworks/base/core/java/android/content/res/Configuration.java
+++ b/frameworks/base/core/java/android/content/res/Configuration.java
@@ -68,6 +68,8 @@ import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.Locale;
 
+import android.util.Log;
+
 /**
  * This class describes all device configuration information that can
  * impact the resources the application retrieves.  This includes both
@@ -877,6 +879,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
      */
     public Configuration(Configuration o) {
         setTo(o);
+		Log.d("ssssssss", "882 Configuration  toString() = " +o.toString());//huizhang
     }
 
     /* This brings mLocaleList in sync with locale in case a user of the older API who doesn't know
@@ -895,6 +898,9 @@ public final class Configuration implements Parcelable, Comparable<Configuration
      */
     public void setTo(Configuration o) {
         fontScale = o.fontScale;
+
+		 Log.d("ssssssss", "901 setTo(Configuration o)  toString() = " +o.toString());//huizhang
+		 Log.d("ssssssss", "setTo(Configuration o) fontScale = " +fontScale);//huizhang
         mcc = o.mcc;
         mnc = o.mnc;
         locale = o.locale == null ? null : (Locale) o.locale.clone();
@@ -1173,7 +1179,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration
      * Set this object to the system defaults.
      */
     public void setToDefaults() {
-        fontScale = 1;
+        fontScale = 1.45f;
+		 Log.d("ssssssss", "setToDefaults   1180 fontScale  = " +fontScale);//huizhang
         mcc = mnc = 0;
         mLocaleList = LocaleList.getEmptyLocaleList();
         locale = null;
@@ -1220,6 +1227,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration
      */
     public @Config int updateFrom(@NonNull Configuration delta) {
         int changed = 0;
+		 Log.d("ssssssss", "setTo 1227 updateFrom  delta.fontScale = " +delta.fontScale);//huizhang
+		 Log.d("ssssssss", "setTo 1228   updateFrom fontScale = " +fontScale);//huizhang
         if (delta.fontScale > 0 && fontScale != delta.fontScale) {
             changed |= ActivityInfo.CONFIG_FONT_SCALE;
             fontScale = delta.fontScale;
@@ -2266,8 +2275,11 @@ public final class Configuration implements Parcelable, Comparable<Configuration
      */
     public static Configuration generateDelta(Configuration base, Configuration change) {
         final Configuration delta = new Configuration();
+		 Log.d("ssssssss", "setTo  2466 generateDelta change.fontScale  = " +change.fontScale);//huizhang
+		 Log.d("ssssssss", "setTo  2466 generateDelta  delta.fontScale  = " +delta.fontScale);//huizhang
         if (base.fontScale != change.fontScale) {
             delta.fontScale = change.fontScale;
+			
         }
 
         if (base.mcc != change.mcc) {
@@ -2460,6 +2472,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
     public static void writeXmlAttrs(XmlSerializer xml, Configuration config) throws IOException {
         XmlUtils.writeIntAttribute(xml, XML_ATTR_FONT_SCALE,
                 Float.floatToIntBits(config.fontScale));
+				 Log.d("ssssssss", "writeXmlAttrs  2466 config.fontScale  = " +config.fontScale);//huizhang
         if (config.mcc != 0) {
             XmlUtils.writeIntAttribute(xml, XML_ATTR_MCC, config.mcc);
         }
diff --git a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
old mode 100644
new mode 100755
index 67bacf0..a5c4794
--- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2296,6 +2296,9 @@ class DatabaseHelper extends SQLiteOpenHelper {
 
             // Set default tty mode
             loadSetting(stmt, Settings.System.TTY_MODE, 0);
+			
+			
+            loadSetting(stmt, Settings.System.FONT_SCALE, 1.45f);
 
             loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS,
                     R.integer.def_screen_brightness);
diff --git a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
old mode 100644
new mode 100755
index 1c635c4..4a88bcb
--- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
@@ -264,7 +264,7 @@ public class SettingsHelper {
                 return !TextUtils.isEmpty(Settings.Secure.getString(
                         mContext.getContentResolver(), name));
             case Settings.System.FONT_SCALE:
-                return Settings.System.getFloat(mContext.getContentResolver(), name, 1.0f) != 1.0f;
+                return Settings.System.getFloat(mContext.getContentResolver(), name, 1.45f) != 1.45f;
             default:
                 return false;
         }
diff --git a/packages/apps/Settings/res/values/arrays.xml b/packages/apps/Settings/res/values/arrays.xml
index eb4aad0..557147a 100755
--- a/packages/apps/Settings/res/values/arrays.xml
+++ b/packages/apps/Settings/res/values/arrays.xml
@@ -147,10 +147,10 @@
     </string-array>
 
     <string-array name="entryvalues_font_size" translatable="false">
-        <item>0.85</item>
-        <item>1.0</item>
-        <item>1.15</item>
-        <item>1.30</item>
+        <item>1.2</item>
+        <item>1.31</item>
+        <item>1.45</item>
+        <item>1.60</item>
     </string-array>
 
     <!-- Wi-Fi settings -->

 

 

### 回答1: Android 9.010.0的Framework系统API上添加JNI方法需要经过以下步骤: 1. 在Java层调用JNI方法前,需要先创建定义JNI方法的C++文件和对应的头文件。这些文件应该保存在frameworks/native/libs/目录下的对应模块中。例如,如果想要在WebView模块中添加JNI方法,则应该在frameworks/native/libs/webviewchromium/目录下创建文件并进行定义。 2. 编写C++代码实现JNI方法。在代码中,需要采用JNI函数以及Java Native Interface标准库的方法来实现该方法的功能。具体实现过程可以参考Android源码中frameworks/native/libs/input/Input.cpp文件的实现。 3. 在C++代码的头文件中定义JNI方法。为了让Java层正确调用JNI方法,需要在C++头文件中定义JNI函数名称、Java包名、Java类名以及方法参数的信息。参考Android源码中frameworks/native/libs/webviewchromium/webviewchromium_jni.h文件。 4. 在Java层调用JNI方法。要调用JNI方法,需要在Java代码中加载C++库。可以使用静态代码块System.loadLibrary("yourlibrary")来加载C++库,并在程序中使用对应的Java扩展头文件。在Java代码中,需要使用JNI函数来调用JNI方法。参考Android源码中frameworks/native/libs/webviewchromium/WebBackForwardList.java文件。 通过以上步骤,即可在Android 9.010.0的Framework系统API中添加JNI方法。需要注意的是,添加JNI方法需要遵循JNI标准,使用合适的JNI库函数和API接口,以确保程序代码的正确性和稳定性。 ### 回答2: Android 9.010.0的Framework系统API都支持添加JNI方法。 首先,要添加一个JNI方法,您需要在Java中编写该方法的实现,然后在C / C ++中编写对应的本地代码,然后使用JNI将二者连接起来。 为了在Framework中添加新的JNI方法,您需要找到Framework源代码中对应的Java类和C ++代码。然后按照以下步骤进行操作: 1. 在Java类中添加新的JNI方法声明,方法名必须与您要添加的本地方法的名称匹配。例如,如果您要添加一个名为newMethod的本地方法,则需要在Java类中声明以下内容: ```java public native void newMethod(int arg1, String arg2); ``` 注意:在声明中,您不能提供方法的实现。 2. 在C / C ++代码中实现新的本地方法,方法名称必须与您在Java中声明的方法名称一致。 ```cpp JNIEXPORT void JNICALL Java_com_example_MyClass_newMethod(JNIEnv *env, jobject obj, jint arg1, jstring arg2) { // 实现您的代码 } ``` 3. 最后,在您的C / C ++代码中获取Java类的引用,以便在Native代码中调用该方法。 ```cpp jclass clazz = env->FindClass("com/example/MyClass"); jmethodID methodId = env->GetMethodID(clazz, "newMethod", "(ILjava/lang/String;)V"); ``` 通过此方法ID,您可以使用JNI在C / C ++中调用该方法。 ```cpp env->CallVoidMethod(obj, methodId, arg1, arg2); ``` 这样,您就可以在Android 9.010.0的Framework系统API中添加新的JNI方法了。 ### 回答3: Android操作系统使用Java语言实现,但是也支持通过JNI机制(Java Native Interface)来调用C/C++编写的代码。在Android 9.010.0版本中,如果需要在Framework系统层中添加JNI方法,需要进行以下步骤: 1. 编写C/C++代码实现需要的功能,并将其编译成动态库(.so文件)。 2. 在Framework层中找到对应的Java类,并添加需要的Native方法声明。例如,如果要在TelephonyManager类中添加一个名为getSignalStrengthDbm的方法,则应该在TelephonyManager.java中添加以下Native方法声明: ``` private native int getSignalStrengthDbm(); ``` 3. 在frameworks/base目录下的services/core/jni目录中添加一个名为TelephonyManager.cpp的文件,并实现getSignalStrengthDbm方法: ``` static jint TelephonyManager_getSignalStrengthDbm(JNIEnv *env, jobject thiz){ // TODO: 通过调用C/C++代码实现需要的功能,并返回结果 return 0; } static const JNINativeMethod gMethods[] = { { "getSignalStrengthDbm", "()I", (void*)TelephonyManager_getSignalStrengthDbm}, }; int register_android_telephony_TelephonyManager(JNIEnv* env) { jclass clazz = env->FindClass("android/telephony/TelephonyManager"); if (clazz == NULL) { ALOGE("Can't find android/telephony/TelephonyManager"); return -1; } return env->RegisterNatives(clazz, gMethods, sizeof(gMethods) / sizeof(JNINativeMethod)); } ``` 4. 在frameworks/base目录下的services/core目录中找到文件Android.bp,将添加的TelephonyManager.cpp文件加入build文件中: ``` cc_library_shared { name: "libandroidfw", srcs: [ "jni/Animation.cpp", ... "jni/TelephonyManager.cpp", ], ... } ``` 5. 在Android.mk文件中添加TelephonyManager.cpp的编译规则: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := TelephonyManager LOCAL_CFLAGS := -Werror LOCAL_SRC_FILES := TelephonyManager.cpp LOCAL_SHARED_LIBRARIES := libutils libcutils libbinder include $(BUILD_SHARED_LIBRARY) ``` 6. 重新编译Framework层并运行即可。 以上是在Android 9.010.0系统中添加JNI方法的步骤,其中涉及到的文件和目录可能有所不同,在实际开发中需要根据具体情况进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值