package com.yarin.android.RingProfile; import java.util.Date; import android.app.AlarmManager; import android.app.PendingIntent; import android.app.TabActivity; import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TabHost; import android.widget.TimePicker; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.TabHost.OnTabChangeListener; public class RingProfile extends TabActivity { private static final String TAG="RingToggle"; //����TabHost���� private TabHost mTabHost; protected boolean isChange; private AlarmManager mAlarmManager; private TimePicker mTimePicker ; private int mTab; private ImageView myImage; private ImageButton downButton; private ImageButton upButton; private ImageButton normalButton; private ImageButton muteButton; private ImageButton vibrateButton; private ProgressBar myProgress; private AudioManager audioMa; private int volume = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //ȡ��TabHost���� mTabHost = getTabHost(); /* ΪTabHost��ӱ�ǩ */ //�½�һ��newTabSpec(newTabSpec) //�������ǩ��ͼ��(setIndicator) //��������(setContent) mTabHost.addTab(mTabHost.newTabSpec("tab_test1") .setIndicator("��ͨ�龰ģʽ",getResources().getDrawable(R.drawable.icon)) .setContent(R.id.RadioGroup01)); mTabHost.addTab(mTabHost.newTabSpec("tab_test2") .setIndicator("��ʱ�龰ģʽ",getResources().getDrawable(R.drawable.timeprofile)) .setContent(R.id.RelativeLayout01)); mTabHost.addTab(mTabHost.newTabSpec("tab_test3") .setIndicator("�Զ����龰ģʽ",getResources().getDrawable(R.drawable.addprofile)) .setContent(R.id.AbsoluteLayout03)); //����TabHost�ı���ͼƬ��Դ mTabHost.setBackgroundResource(R.drawable.bg); //���õ�ǰ��ʾ��һ����ǩ mTabHost.setCurrentTab(0); mTab = 0; updateRadioGroup(); //��ʼ����ȡ��AudioManager audioMa = (AudioManager)getSystemService(Context.AUDIO_SERVICE); myImage = (ImageView)findViewById(R.id.myImage); myProgress = (ProgressBar)findViewById(R.id.myProgress); downButton = (ImageButton)findViewById(R.id.downButton); upButton = (ImageButton)findViewById(R.id.upButton); normalButton = (ImageButton)findViewById(R.id.normalButton); muteButton = (ImageButton)findViewById(R.id.muteButton); vibrateButton = (ImageButton)findViewById(R.id.vibrateButton); //��ǩ�л��¼�����setOnTabChangedListener mTabHost.setOnTabChangedListener(new OnTabChangeListener() { @Override public void onTabChanged(String tabId) { if ( tabId.equals("tab_test1") ) { mTab = 0; mAlarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); mTimePicker = (TimePicker)findViewById(R.id.timePkr); mTimePicker.setIs24HourView(true); updateRadioGroup(); } else if ( tabId.equals("tab_test2") ) { mTab = 1; mAlarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); mTimePicker = (TimePicker)findViewById(R.id.timePkr); mTimePicker.setIs24HourView(true); updateRadioGroup(); } } }); /***************************************************************/ RadioGroup group1 = (RadioGroup) findViewById(R.id.RadioGroup01); group1.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { if (isChange) return; switch (checkedId) { case R.id.ring_and_vibrate01: ringAndVibrate(); break; case R.id.ring01: ring(); break; case R.id.vibrate01: vibrate(); break; case R.id.silent01: silent(); break; } RadioButton radio = (RadioButton) findViewById(checkedId); if (radio != null) radio.setTextSize(30); } }); //RadioButton��Ӽ����� for (int i = 0, l = group1.getChildCount(); i < l; i++) { RadioButton radio = (RadioButton) group1.getChildAt(i); radio.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { RadioButton radio = (RadioButton) v; if (!radio.isChecked()) return false; radio.setTextSize(30); return false; } }); } /***************************************************************/ //���onChangeListener RadioGroup group2 = (RadioGroup) findViewById(R.id.RadioGroup02); group2.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { if (isChange) return; switch (checkedId) { case R.id.ring_and_vibrate02: ringAndVibrate(); break; case R.id.ring02: ring(); break; case R.id.vibrate02: vibrate(); break; case R.id.silent02: silent(); break; } RadioButton radio = (RadioButton) findViewById(checkedId); if (radio != null) radio.setTextSize(30); } }); //RadioButton��Ӽ����� for (int i = 0, l = group2.getChildCount(); i < l; i++) { RadioButton radio = (RadioButton) group2.getChildAt(i); radio.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { RadioButton radio = (RadioButton) v; if (!radio.isChecked()) return false; radio.setTextSize(30); return false; } }); } //ȡ���ֻ��ij�ʼ����������ʼ�������� volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); myProgress.setProgress(volume); //ȡ�ó�ʼģʽ�����ֱ�����ͼ�� int mode=audioMa.getRingerMode(); if(mode==AudioManager.RINGER_MODE_NORMAL) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.icon)); } else if(mode==AudioManager.RINGER_MODE_SILENT) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.mute)); } else if(mode==AudioManager.RINGER_MODE_VIBRATE) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.vibrate)); } //������������ downButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { //adjustVolume�������Ӻͽ������� audioMa.adjustVolume(AudioManager.ADJUST_LOWER, 0); volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); //���ý����� myProgress.setProgress(volume); //����ͼ�� int mode=audioMa.getRingerMode(); if(mode==AudioManager.RINGER_MODE_NORMAL) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.icon)); } else if(mode==AudioManager.RINGER_MODE_SILENT) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.mute)); } else if(mode==AudioManager.RINGER_MODE_VIBRATE) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.vibrate)); } } }); //������� upButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { //AudioManager.ADJUST_RAISE������� audioMa.adjustVolume(AudioManager.ADJUST_RAISE, 0); volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); myProgress.setProgress(volume); int mode=audioMa.getRingerMode(); if(mode==AudioManager.RINGER_MODE_NORMAL) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.icon)); } else if(mode==AudioManager.RINGER_MODE_SILENT) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.mute)); } else if(mode==AudioManager.RINGER_MODE_VIBRATE) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.vibrate)); } } }); //����״̬ normalButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { audioMa.setRingerMode(AudioManager.RINGER_MODE_NORMAL); volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); myProgress.setProgress(volume); myImage.setImageDrawable(getResources() .getDrawable(R.drawable.icon)); } }); //����״̬ muteButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { audioMa.setRingerMode(AudioManager.RINGER_MODE_SILENT); volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); myProgress.setProgress(volume); myImage.setImageDrawable(getResources() .getDrawable(R.drawable.mute)); } }); //��״̬ vibrateButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { audioMa.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); myProgress.setProgress(volume); myImage.setImageDrawable(getResources() .getDrawable(R.drawable.vibrate)); } }); } // �����龰ģʽ protected void updateRadioGroup() { int checkedId = currentMode(); RadioButton checked = (RadioButton) findViewById(checkedId); isChange = true; checked.setChecked(true); isChange = false; } // ȡ�õ�ǰ�龰ģʽ protected int currentMode() { AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); switch (audio.getRingerMode()) { case AudioManager.RINGER_MODE_SILENT: if ( mTab == 0 ) { return R.id.silent01; } else { return R.id.silent02; } case AudioManager.RINGER_MODE_VIBRATE: if ( mTab == 0 ) { return R.id.vibrate01; } else { return R.id.vibrate02; } } if (audio.shouldVibrate(AudioManager.VIBRATE_TYPE_RINGER)) { if ( mTab == 0 ) { return R.id.ring_and_vibrate01; } else { return R.id.ring_and_vibrate02; } } if ( mTab == 0 ) { return R.id.ring01; } else { return R.id.ring02; } } /***************************************************************/ // �������� protected void ringAndVibrate() { Intent intent = new Intent(RingBroadcastReceiver.RV_CHANGED); if ( mTab == 0 ) { intent.putExtra("checkedId", R.id.ring_and_vibrate01); } else { intent.putExtra("checkedId", R.id.ring_and_vibrate02); } PendingIntent alarmIntent = PendingIntent.getBroadcast(this, RingBroadcastReceiver.REQUEST_CODE, intent, 0); Log.e(TAG, "" + intent); mAlarmManager.set(AlarmManager.RTC_WAKEUP, getTime(), alarmIntent); } // ���� protected void ring() { Intent intent = new Intent(RingBroadcastReceiver.RING_CHANGED); if ( mTab == 0 ) { intent.putExtra("checkedId", R.id.ring01); } else { intent.putExtra("checkedId", R.id.ring02); } PendingIntent alarmIntent = PendingIntent.getBroadcast(this, RingBroadcastReceiver.REQUEST_CODE, intent, 0); Log.e(TAG, "" + intent); mAlarmManager.set(AlarmManager.RTC_WAKEUP, getTime(), alarmIntent); } // �� protected void vibrate() { Intent intent = new Intent(RingBroadcastReceiver.VIBRATE_CHANGED); if ( mTab == 0 ) { intent.putExtra("checkedId", R.id.vibrate01); } else { intent.putExtra("checkedId", R.id.vibrate02); } PendingIntent alarmIntent = PendingIntent.getBroadcast(this, RingBroadcastReceiver.REQUEST_CODE, intent, 0); Log.e(TAG, "" + intent); mAlarmManager.set(AlarmManager.RTC_WAKEUP, getTime(), alarmIntent); } // ���� protected void silent() { Intent intent = new Intent(RingBroadcastReceiver.SILENT_CHANGED); if ( mTab == 0 ) { intent.putExtra("checkedId", R.id.silent01); } else { intent.putExtra("checkedId", R.id.silent02); } PendingIntent alarmIntent = PendingIntent.getBroadcast(this, RingBroadcastReceiver.REQUEST_CODE, intent, 0); Log.e(TAG, "" + intent); mAlarmManager.set(AlarmManager.RTC_WAKEUP, getTime(), alarmIntent); } // �����л�ʱ�� private long getTime() { Date dateNow = new Date(); long hour = mTimePicker.getCurrentHour() - dateNow.getHours(); long min = mTimePicker.getCurrentMinute() - dateNow.getMinutes(); long second = dateNow.getSeconds(); return dateNow.getTime() + (hour * 60 + min) * 60 * 1000 - second * 1000; } /***********************************************************************************/ }