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

脚盆原创,转载请注明出处。http://www.cnblogs.com/ziip/archive/2011/03/01/1968388.html

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。

更多相关文章

  1. android Immutable bitmap passed to Canvas constructor异常
  2. Android的一些网上开发资源链接地址
  3. Android(安卓)Contacts的使用(二)
  4. 使用 Android(安卓)NDK 的一般方法:
  5. Android(安卓)DeepLink原理与应用(2)
  6. 在Visual Studio 2010/2012/2013/2015上使用C#开发Android/IOS安
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. Android面试系列文章2018之Java部分IO编
  2. 安卓开发文件缓存方法的具体实现(参考代
  3. Android(安卓)官网无法访问的解决方法
  4. android的armeabi和armeabi-v7a
  5. Android存储数据的方式
  6. react-native 中配置极光推送 Android关
  7. React Native for Android(安卓)实战(一):配
  8. [Android]使用Stack实现简易计算器
  9. 关于android下audioflinger+alsa+a2dp+pc
  10. android bunlde简单使用