织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>嵌入式开发>Android>

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

落鹤生 发布于 2010-03-22 13:23 点击:次 
在ANDROID中,系统设置的权限一大堆,让我一直很头痛,今天我以背光调节为例子,来讲解一下相关权限,要调节背光设置,先把设置前光的JAVA源码
TAG:

    在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 void onStartTrackingTouch(SeekBar bar) {
            }

        public void onProgressChanged(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 void onStopTrackingTouch(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("set brightness", "OK");
        } catch (RemoteException doe) {Log.v("set brightness", "ERROR");
        }
    }

代码很少,这样就实现了背光调节了,可以用吗,不可以,这样是会报错的,必需在AndroidManifest.xml中加上相关权限:
<uses-permission android:name="android.permission.READ_CONTACTS" />
      <uses-permission android:name="android.permission.WRITE_SETTINGS" />
      <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
      <uses-permission android:name="android.permission.HARDWARE_TEST" />
开始我以为这样就可以了,但还是一调节还是报错,查了半天资料才发现,还需要签名才能有这个权限,在manifest中加上android:sharedUserId="android.uid.system"
然后在Android.mk
中通过证书来声明权限。
LOCAL_CERTIFICATE := platform
需要和manifest中的android:sharedUserId="android.uid.system"  对应起来。  
platform 权限问题,最好运行在自己编译系统上,才可以有次特权。

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

原文:http://blog.sina.com.cn/s/blog_5be1061c0100gqvd.html

(太阳下的泪)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201003/8831.html]
本文出处:新浪博客 作者:太阳下的泪
顶一下
(4)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容