bogongjie 发表于 2013-1-30 04:02:18

android ContentObserver

在android 开发中有的时候我们会用到contentobserver,contentobserver被称为内容观察者,它不仅能监听到数据库中数据的变化,也能对系统中的某些数据进行监听,像屏幕的亮度,系统的声音等.本次主要说的对系统的亮度进行监听.
先写一个类extends contentobserver ,重写onchange(boolean),在onchange中进行监听,当亮度变化时候进行处理,
在这里当亮度变化用一handler来显示Toast.
 
public class BrightnessValue extends ContentObserver{private Handler handler;public BrightnessValue(Handler handler) {super(handler);// TODO Auto-generated constructor stubthis.handler = handler;}@Overridepublic void onChange(boolean selfChange) {// TODO Auto-generated method stubsuper.onChange(selfChange);try {int BrightnessValue = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);Log.i(">>>>>>>>>>>>>>>Hook brightness value : ",String.valueOf(BrightnessValue));handler.sendEmptyMessage(1);}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}}private Handler mHandler = new Handler(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);Toast.makeText(this, "The brightness value has changed", 1000).show();}};  
當然,只是做一個這樣的監聽是不行的,還需要對它進行註冊,只有註冊才能進行監聽.
 
public void registerOberver(){Uri uri = Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);getContentResolver().registerContentObserver(uri, false, BrightnessObserver);}  
最後,在onCreat方法中加兩條就好了.
 
BrightnessObserver = new BrightnessValue(mHandler);registerOberver();  
页: [1]
查看完整版本: android ContentObserver