• Android中系统设置参数改变监听(以时间同步为例)


    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. */
        @Override
        public 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() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    int nAutoTimeStatus = Settings.System.getInt(
                            getContentResolver(), Settings.System.AUTO_TIME, OFF);
                    OutPrintLog("当前时间同步状态:" + nAutoTimeStatus);
                }
            });
    
            mbtnAutoTime = (Button) findViewById(R.id.button2);
            mbtnAutoTime.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
    
                    int 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()) {
                    @Override
                    public void onChange(boolean selfChange) {
                        Log.i(TAG, "Auto time state changed");
                        int nAutoTimeStatus = Settings.System.getInt(
                                getContentResolver(), Settings.System.AUTO_TIME,
                                OFF);
                        OutPrintLog("当前时间同步状态:" + nAutoTimeStatus);
                    }
                };
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    if (!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());
        }
  • 相关阅读:
    原型与原型链
    数据类型与计算
    JavaScript实现版本号比较
    vue依赖
    vue
    面试经验
    第十一节课 课堂总结
    第十一次作业
    第十课课堂总结
    第十次作业
  • 原文地址:https://www.cnblogs.com/gzggyy/p/3072504.html
Copyright © 2020-2023  润新知