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 stub
				this.handler = handler;
			}

			@Override
			public void onChange(boolean selfChange) {
				// TODO Auto-generated method stub
				super.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 exception
					e.printStackTrace();
				}
			}
			
		}

private Handler mHandler = new Handler(){

			@Override
			public void handleMessage(Message msg) {
				// TODO Auto-generated method stub
				super.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();
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值