Android中系统设置参数改变监听(以时间同步为例)
16lz
2021-12-22
Result:
Source code:
package com.inanwong.main;import java.text.SimpleDateFormat;import java.util.Date;import android.app.Activity;import android.database.ContentObserver;import android.os.Bundle;import android.os.Handler;import android.provider.Settings;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {private static final String TAG = "MainActivity";private static final int ON = 1;private static final int OFF = 0;private Button mbtnGetStatus;private Button mbtnAutoTime;private Button mbtnAutoTimeListen;private TextView mtvInfo;/** * 是否开启时间同步监听 */private boolean isListening = false;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);mtvInfo = (TextView) findViewById(R.id.multiAutoCompleteTextView1);mtvInfo.setText("");mbtnGetStatus = (Button) findViewById(R.id.button1);mbtnGetStatus.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubint nAutoTimeStatus = Settings.System.getInt(getContentResolver(), Settings.System.AUTO_TIME, OFF);OutPrintLog("当前时间同步状态:" + nAutoTimeStatus);}});mbtnAutoTime = (Button) findViewById(R.id.button2);mbtnAutoTime.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubint nAutoTimeStatus = Settings.System.getInt(getContentResolver(), Settings.System.AUTO_TIME, OFF);Settings.System.putInt(getContentResolver(),Settings.System.AUTO_TIME, nAutoTimeStatus == OFF ? ON: OFF);Refresh();}});mbtnAutoTimeListen = (Button) findViewById(R.id.button3);mbtnAutoTimeListen.setOnClickListener(new OnClickListener() {private ContentObserver mAutoTimeObserver = new ContentObserver(new Handler()) {@Overridepublic void onChange(boolean selfChange) {Log.i(TAG, "Auto time state changed");int nAutoTimeStatus = Settings.System.getInt(getContentResolver(), Settings.System.AUTO_TIME,OFF);OutPrintLog("当前时间同步状态:" + nAutoTimeStatus);}};@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (!isListening) {getApplication().getContentResolver().registerContentObserver(Settings.System.getUriFor(Settings.System.AUTO_TIME),true, mAutoTimeObserver);} else {getApplicationContext().getContentResolver().unregisterContentObserver(this.mAutoTimeObserver);}isListening = !isListening;Refresh();}});Refresh();}private void Refresh() {int nAutoTimeStatus = Settings.System.getInt(getContentResolver(),Settings.System.AUTO_TIME, OFF);mbtnAutoTime.setText(nAutoTimeStatus == OFF ? R.string.app_autotime_start: R.string.app_autotime_end);mbtnAutoTimeListen.setText(isListening ? R.string.app_autotimelisten_end: R.string.app_autotimelisten_start);}private void OutPrintLog(CharSequence text) {mtvInfo.setText((mtvInfo.getText()).toString()+ new SimpleDateFormat("\n mm:ss").format(new Date())+ text.toString());}}
更多相关文章
- android 游戏框架SurfaceView
- Android(安卓)恐怖幽灵音效 程序(源码详解)
- android获取位置权限,手机状态权限,存储权限
- android 读取网络在传输数据时的状态
- 【notification】Android(安卓)中创建状态栏通知
- android 监听判断软键盘的弹出、隐藏状态
- android 获取时间
- Android(安卓)Notification不显示时间
- Android获取UTC时间的方式