男生带项链:【转】android?系统设置的权限(背光设置)

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 22:26:58

android 系统设置的权限(背光设置)

(2010-01-18 15:28:51)转载 标签:

android

背光

权限

it

分类: android系统    在ANDROID中,系统设置的权限一大堆,让我一直很头痛,今天我以背光调节为例子,来讲解一下相关权限,要调节背光设置,先把设置前光的JAVA源码写上:
初始化:
 public void InitBrightness()
    {
//相关控件,用SEEKBAR来调节背光
 mChangeBtName =(TextView)this.findViewById(R.id.play_bt_change_name);
       mChangeBar = (SeekBar)this.findViewById(R.id.bt_set_seekbar);
       
   //mChangeBar.setOnFocusChangeListener(this);
//获取当前背光亮度并在SEEKBAR上呈现
    try {
       mOldBrightness = Settings.System.getInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS);
    } catch(SettingNotFoundException snfe) {
      mOldBrightness = MAXIMUM_BACKLIGHT;
    }
   Log.v("Brightness", "number" + mOldBrightness);
       mChangeBar.setMax(MAXIMUM_BACKLIGHT - MINIMUM_BACKLIGHT);
   Log.v("Brightness max", "setmax:" + (MAXIMUM_BACKLIGHT -MINIMUM_BACKLIGHT));
   mChangeBar.setProgress(mOldBrightness - MINIMUM_BACKLIGHT);
   mChangeBtName.setText(String.valueOf((mOldBrightness -MINIMUM_BACKLIGHT)/25));

//进度条控制
   mChangeBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
       public voidonStartTrackingTouch(SeekBar bar) {
          }

       public voidonProgressChanged(SeekBar bar, int progress,boolean fromtouch){
         Log.v("Progress", "num:" + progress);
          int step =25;
         Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS,progress + MINIMUM_BACKLIGHT);
         Log.v("Progress", "putINTOK");
         setBrightness(progress + MINIMUM_BACKLIGHT);
         mChangeBtName.setText(String.valueOf(progress/step));
          }

       public voidonStopTrackingTouch(SeekBar bar) {
          }
          });
   
   }
设置背光函数:
private void setBrightness(int brightness) {
       try {
         Log.v("Progress", "set brightness");
         IHardwareService hardware = IHardwareService.Stub
               .asInterface(ServiceManager.getService("hardware"));
          if (hardware!= null) {
            hardware.setBacklights(brightness);
          }
          Log.v("setbrightness", "OK");
       } catch(RemoteException doe) {Log.v("set brightness", "ERROR");
       }
    }

代码很少,这样就实现了背光调节了,可以用吗,不可以,这样是会报错的,必需在AndroidManifest.xml中加上相关权限:

     
     
     
开始我以为这样就可以了,但还是一调节还是报错,查了半天资料才发现,还需要签名才能有这个权限,在manifest中加上android:sharedUserId="android.uid.system"
然后在Android.mk
中通过证书来声明权限。
LOCAL_CERTIFICATE := platform
需要和manifest中的android:sharedUserId="android.uid.system"  对应起来。  
platform 权限问题,最好运行在自己编译的系统上,才可以有次特权。

OK完成了,用MM编译这个APP,生成的APK就可以用了。注意:这个在SDK上使用ECLIPSEIDE是不能编译过只。只能在ANDROID系统中的编译环境下,配置好MK文件,用MAKE来编译。