package com.keju.maomao.activity.setting;
import android.app.Activity;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.keju.maomao.Constants;
import com.keju.maomao.R;
import com.keju.maomao.activity.base.BaseActivity;
import com.keju.maomao.util.SharedPrefUtil;
/**
* @author ZhouYongJian
* @date 创建时间:2013-10-30
*/
public class SettingNoticeActivity extends BaseActivity implements OnClickListener {
private ImageButton ibLeft;
private TextView tvTitle;
private LinearLayout viewShake;
private LinearLayout viewRing;
private LinearLayout viewChoiseRing;
private CheckBox cbShake;
private CheckBox cbNewMessage;
private CheckBox cbRing;// 铃声
private ImageView ivChoiseRing;
private String mCustomRingtone;
// 保存铃声的Uri的字符串形式
private String mRingtoneUri = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.setting_notice);
findView();
fillData();
}
private void findView() {
ibLeft = (ImageButton) this.findViewById(R.id.ibLeft);
ibLeft.setImageResource(R.drawable.ic_btn_left);
ibLeft.setOnClickListener(this);
tvTitle = (TextView) this.findViewById(R.id.tvTitle);
viewChoiseRing = (LinearLayout) this.findViewById(R.id.viewChoiseRing);
viewRing = (LinearLayout) this.findViewById(R.id.viewRing);
viewShake = (LinearLayout) this.findViewById(R.id.viewShake);
cbNewMessage = (CheckBox) this.findViewById(R.id.cbNewMessage);
cbRing = (CheckBox) this.findViewById(R.id.cbRing);
cbShake = (CheckBox) this.findViewById(R.id.cbShake);
ivChoiseRing = (ImageView) this.findViewById(R.id.ivChoiseRing);
// 判断是否接受信息的铃声和振动选择
if (SharedPrefUtil.getNewLetter(SettingNoticeActivity.this)) {
// 判断是否振动
if (SharedPrefUtil.getVibrate(SettingNoticeActivity.this)) {
cbShake.setButtonDrawable(R.drawable.btn_check_on_normal);
} else {
cbShake.setButtonDrawable(R.drawable.btn_check_off_normal);
}
// 判断铃声
if (SharedPrefUtil.getPlayRing(SettingNoticeActivity.this)) {
viewChoiseRing.setVisibility(View.VISIBLE);
cbRing.setButtonDrawable(R.drawable.btn_check_on_normal);
} else {
viewChoiseRing.setVisibility(View.GONE);
cbRing.setButtonDrawable(R.drawable.btn_check_off_normal);
}
cbNewMessage.setButtonDrawable(R.drawable.btn_check_on_normal);
viewRing.setVisibility(View.VISIBLE);
viewShake.setVisibility(View.VISIBLE);
} else {
cbNewMessage.setButtonDrawable(R.drawable.btn_check_off_normal);
viewChoiseRing.setVisibility(View.GONE);
viewRing.setVisibility(View.GONE);
viewShake.setVisibility(View.GONE);
}
}
private void fillData() {
tvTitle.setText("新消息提醒");
// 接受新消息
viewChoiseRing.setOnClickListener(this);
cbNewMessage.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPrefUtil.setNewLetter(SettingNoticeActivity.this, isChecked);
if (isChecked) {
cbNewMessage.setButtonDrawable(R.drawable.btn_check_on_normal);
if (SharedPrefUtil.getPlayRing(SettingNoticeActivity.this)) {
viewChoiseRing.setVisibility(View.VISIBLE);
}
viewRing.setVisibility(View.VISIBLE);
viewShake.setVisibility(View.VISIBLE);
isChecked = false;
} else {
cbNewMessage.setButtonDrawable(R.drawable.btn_check_off_normal);
viewRing.setVisibility(View.GONE);
viewShake.setVisibility(View.GONE);
viewChoiseRing.setVisibility(View.GONE);
}
}
});
// 铃声
cbRing.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPrefUtil.setPlayRing(SettingNoticeActivity.this, isChecked);
if (isChecked) {
viewChoiseRing.setVisibility(View.VISIBLE);
cbRing.setButtonDrawable(R.drawable.btn_check_on_normal);
} else {
viewChoiseRing.setVisibility(View.GONE);
cbRing.setButtonDrawable(R.drawable.btn_check_off_normal);
}
}
});
// 振动
cbShake.setOnClickListener(this);
cbShake.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPrefUtil.setVibrate(SettingNoticeActivity.this, isChecked);
if (isChecked) {
cbShake.setButtonDrawable(R.drawable.btn_check_on_normal);
} else {
cbShake.setButtonDrawable(R.drawable.btn_check_off_normal);
}
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ibLeft:
finish();
break;
case R.id.viewChoiseRing:
doPickRingtone();
break;
default:
break;
}
}
/***
* 调用系统铃声
*/
private void doPickRingtone() {
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
// Allow user to pick 'Default'
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
// Show only ringtones
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
// Don't show 'Silent'
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
Uri ringtoneUri;
if (mRingtoneUri != null) {
ringtoneUri = Uri.parse(mRingtoneUri);
} else {
// Otherwise pick default ringtone Uri so that something is
// selected.
ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
}
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtoneUri);
// Launch!
// startActivityForResult(intent, REQUEST_CODE_PICK_RINGTONE);
startActivityForResult(intent, Constants.REQUEST_CODE_PICK_RINGTONE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_OK) {
return;
}
switch (requestCode) {
case Constants.REQUEST_CODE_PICK_RINGTONE: {
Uri pickedUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
handleRingtonePicked(pickedUri);
break;
}
}
}
private void handleRingtonePicked(Uri pickedUri) {
if (pickedUri == null || RingtoneManager.isDefault(pickedUri)) {
mRingtoneUri = null;
} else {
mRingtoneUri = pickedUri.toString();
SharedPrefUtil.setRingUrl(SettingNoticeActivity.this, mRingtoneUri);
}
}
}