Android13 设置-开关控制动画切换

两套开机动画,开关控制切换

--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -177,5 +177,10 @@
             android:title="@string/hdmi_settings"
             settings:keywords="@string/hdmi_settings"
             android:fragment="com.android.settings.display.HdmiSettings" />
+        <SwitchPreference
+            android:key="bootanimation_mode"
+            android:title="@string/dark_theme_main_switch_title"
+
+            settings:controller="com.android.settings.display.BootanimationModePreferenceController" />
     </PreferenceCategory>
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -70,6 +70,7 @@ static const char OEM_BOOTANIMATION_FILE[] = "/oem/media/bootanimation.zip";
 static const char PRODUCT_BOOTANIMATION_DARK_FILE[] = "/product/media/bootanimation-dark.zip";
 static const char PRODUCT_BOOTANIMATION_FILE[] = "/product/media/bootanimation.zip";
 static const char SYSTEM_BOOTANIMATION_FILE[] = "/system/media/bootanimation.zip";
+static const char SYSTEM_BOOTANIMATION_FILE_ONE[] = "/system/media/bootanimation_1.zip";
 static const char APEX_BOOTANIMATION_FILE[] = "/apex/com.android.bootanimation/etc/bootanimation.zip";
 static const char PRODUCT_ENCRYPTED_BOOTANIMATION_FILE[] = "/product/media/bootanimation-encrypted.zip";
 static const char SYSTEM_ENCRYPTED_BOOTANIMATION_FILE[] = "/system/media/bootanimation-encrypted.zip";
@@ -675,6 +676,10 @@ void BootAnimation::findBootAnimationFile() {
     static const std::vector<std::string> bootFiles = {
         APEX_BOOTANIMATION_FILE, playDarkAnim ? PRODUCT_BOOTANIMATION_DARK_FILE : PRODUCT_BOOTANIMATION_FILE,
         OEM_BOOTANIMATION_FILE, SYSTEM_BOOTANIMATION_FILE
+    };
+       static const std::vector<std::string> bootFiles_one = {
+        APEX_BOOTANIMATION_FILE, playDarkAnim ? PRODUCT_BOOTANIMATION_DARK_FILE : PRODUCT_BOOTANIMATION_FILE,
+        OEM_BOOTANIMATION_FILE, SYSTEM_BOOTANIMATION_FILE_ONE
     };
     static const std::vector<std::string> shutdownFiles = {
         PRODUCT_SHUTDOWNANIMATION_FILE, OEM_SHUTDOWNANIMATION_FILE, SYSTEM_SHUTDOWNANIMATION_FILE, ""
@@ -689,7 +694,15 @@ void BootAnimation::findBootAnimationFile() {
     } else if (mShuttingDown) {
         findBootAnimationFileInternal(shutdownFiles);
     } else {
-        findBootAnimationFileInternal(bootFiles);
+
+               if(android::base::GetProperty("persist.sys.bootanimation", "0")=="0"){
+                       SLOGE("sqlin bootanimation0");
+                       findBootAnimationFileInternal(bootFiles);
+               }else if (android::base::GetProperty("persist.sys.bootanimation", "0")=="1"){
+                       SLOGE("sqlin bootanimation1");
+                       findBootAnimationFileInternal(bootFiles_one);
+               }
+
     }
 }

通过加载不同路径,实现动画切换
src/com/android/settings/display/BootanimationModePreferenceController.java


package com.android.settings.display;

import android.content.Context;
import android.provider.Settings;

import androidx.preference.Preference;
import androidx.preference.SwitchPreference;

import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;
import android.os.SystemProperties;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.R;
public class BootanimationModePreferenceController extends TogglePreferenceController {

    private static final String TAG = "BootanimationModePreferenceController";

    static final int ON = 1;

    static final int OFF = 0;
    private static  String BOOT_ANIMATION = "persist.sys.bootanimation";

    public BootanimationModePreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        android.util.Log.i(TAG, "BootanimationModePreferenceController: ");
    }

    @Override
    public int getAvailabilityStatus() {
        return AVAILABLE;
    }

    @Override
    public boolean isChecked() {
        android.util.Log.i(TAG, "isChecked: ");
        return Settings.Secure.getInt(mContext.getContentResolver(),
                "otg_system", OFF) == ON;
    }

    @Override
    public boolean setChecked(boolean isChecked) {
        android.util.Log.i(TAG, "setChecked: "+isChecked);
        android.os.SystemProperties.set(BOOT_ANIMATION,isChecked?"1":"0");
        return Settings.Secure.putInt(mContext.getContentResolver(),
                "otg_system", isChecked ? ON : OFF);
    }

    @java.lang.Override
    public int getSliceHighlightMenuRes() {
        android.util.Log.i(TAG, "getSliceHighlightMenuRes: ");
        return R.string.menu_key_system;
    }

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值