zoukankan      html  css  js  c++  java
  • 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());
        }
  • 相关阅读:
    WPF 模拟UI 键盘录入
    rabbitmq使用dead letter机制来进行retry
    工厂设计模式
    python 内置速度最快算法(堆排)
    简单工厂设计模式
    杂类
    MorkDown 常用语法总结
    使用python列表推导式进行99乘法表
    linux 命令free -m 命令结果分析
    理解记忆三种常见字符编码:ASCII, Unicode,UTF-8
  • 原文地址:https://www.cnblogs.com/gzggyy/p/3072504.html
Copyright © 2011-2022 走看看