zoukankan      html  css  js  c++  java
  • android 4.1 关机动画实现简述,开机动画停止

    frameworks/base/cmds/bootanimation/BootAnimation.cpp

    在原来开机动画的基础上,获取动画文件方法

    BootAnimation::getAnimationFileName(){

      ...

      state = checkBootState() ? 0 : 1; //若state 为1 调用关机动画

      ...

    }

    bool BootAnimation::checkBootState(void){
        char value[PROPERTY_VALUE_MAX];
      bool ret = true;
        property_get("sys.shutdown.requested", value, "null"); //若该属性非空,返回false

      if (strcmp(value, "null") != 0) {

         ret = false;

      }

         return ret;

    }
    有上述可知 如要启动关机动画只需,启动 BootAnimation服务 并且 给sys.shutdown.requested设置一个非空属性即可
    -----------------------------------

    frameworks/base/services/java/com/android/server/pm/ShutdownThread.java

    ShutdownThread一个线程类 在 run方法里面 添加

    SystemProperties.set(SHUTDOWN_ACTION_PROPERTY, reason);  //SHUTDOWN_ACTION_PROPERTY为sys.shutdown.requested

    点击关机dialog执行

    private static void beginShutdownSequence(Context context) {

      ...

      if (FeatureQuery.FEATURE_BOOT_ANIMATION && checkAnimationFileExist()) {

        lockDevice();

        showShutdownAnimation();

        ...

      }

      ...

    }

    private static void showShutdownAnimation() {

      SystemProperties.set("ctl.start", "bootanim");  //调用开机动画服务 

    }

    ==================================

    开机动画停止

    frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp

    void SurfaceFlinger::bootFinished(){

      ...

      property_set("service.bootanim.exit", "1"); //设置停止动画属性

    }

    -------------------

    frameworks/base/cmds/bootanimation/BootAnimation.cpp

    在动画循环中调用方法 checkExit()

    void BootAnimation::checkExit() {

      char value[PROPERTY_VALUE_MAX];

      property_get(EXIT_PROP_NAME, value, "0");//EXIT_PROP_NAME为字符串 service.bootanim.exit

      int exitnow = atoi(value);

      if (exitnow) {

        requestExit();

      }

    }

  • 相关阅读:
    例图作业
    冲刺第二天
    Day9
    Day8
    Day7
    Day6
    Day5
    Day4
    Day2
    第四次作业——个人作业——软件案例分析
  • 原文地址:https://www.cnblogs.com/adamli/p/3253034.html
Copyright © 2011-2022 走看看