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 stubint 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 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()) {
@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 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());
} |
|