您的位置:首页 > 移动开发 > Android开发

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

2013-05-11 10:51 561 查看


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());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: