android隠しapiを用いて輝度調整を実現する方法

1628 ワード

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はまだ直接使用できません.システムプロセスでターゲットシステムのplatformkeyを実行したいため、署名が一致しないことを示します.
次にplatformkeyを使用してapkに署名します.
1.圧縮ソフトでapkファイルを開き、META-INFディレクトリの下のCERT.SFとCERT.RSAの2つのファイルを削除します.
2.ターゲットシステムのplatformキーを使用してapkファイルに再署名します.まず鍵ファイルを見つけます.私のAndroidソースディレクトリの位置は「buildtargetproductsecurity」で、次のplatform.pk 8とplatform.x 509.pemの2つのファイルです.次にAndroidが提供するSignapkツールで署名します.signapkのソースコードは「buildtoolssignapk」の下で、使い方は"java �Cjar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk"
署名後のapkは使用できますが、この方法では他の隠しapiも使用できます.