• 使用android隐藏api实现亮度调节


    原创,转载请注明出处。

    Android 1.5之后将调节亮度的api隐藏了,不过android的源码中依然有方法可以实现,如下:

     

        IPowerManager power = IPowerManager.Stub.asInterface(ServiceManager
    
                      .getService("power"));
    
        if (power != null) {
    
           power.setBacklightBrightness(brightness);
    

    上面的代码无法直接在官方的sdk中调用,会提示找不到IpowerManager和I ServiceManager,需要下载android的源码,将调用这个方法的工程在android源码环境下编译。

    编译方法如下,在调用该方法的工程根目录下创建Android.mk文件:

     

    LOCAL_PATH:= $(call my-dir)

    include $(CLEAR_VARS)





    LOCAL_MODULE_TAGS :
    = user



    LOCAL_SRC_FILES :
    = $(call all-subdir-java-files)



    LOCAL_PACKAGE_NAME :
    = myProject

    LOCAL_CERTIFICATE :
    = platform



    include $(BUILD_PACKAGE)

    另外,还需要在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。(更正,这个属性不需要添加)

    将工程目录拷贝到/packages/apps/下,执行mmm编译。会在out目录下生成apk文件,这里的apk还无法直接使用,会提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platform key。

    接下来使用platform key对apk签名:

    1. 用压缩软件打开apk文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。

    2. 使用目标系统的platform密钥来重新给apk文件签名。首先找到密钥文件,在我的Android源码目录中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在"build\tools\signapk"下,用法为"java –jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk"

    签名后的apk就可以使用了,通过这种方法还可以使用其他的隐藏api。

  • 相关阅读:
    Ubuntu下Chromium for Android 源码的编译
    Ubuntu下编译Chromium for Android
    解决Inno Setup制作安装包无法创建桌面快捷方式的问题
    linux下验证码无法显示:Could not initialize class sun.awt.X1 解决方案
    在ubuntu 14.04 64位系统上安装32位库
    zxing实现二维码生成和解析
    H264码流打包分析
    YUV格式&像素
    谈谈“色彩空间表示方法”——RGB、YUY2、YUYV、YVYU、UYVY、AYUV
    RTP与RTCP协议介绍
  • 原文地址:https://www.cnblogs.com/ziip/p/1968388.html
Copyright © 2020-2023  润新知