1:RingProfile

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 ImageViewmyImage;private ImageButtondownButton;private ImageButtonupButton;private ImageButtonnormalButton;private ImageButtonmuteButton;private ImageButtonvibrateButton;private ProgressBarmyProgress;private AudioManageraudioMa;private intvolume= 0;  @Overridepublic 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;                                                    }                           });        }                //取得手机的初始音量,并初始化进度条        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;}/***********************************************************************************/}

2:RingBroadcastReceiver

package com.yarin.android.RingProfile;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.media.AudioManager;import android.util.Log;public class RingBroadcastReceiver extends BroadcastReceiver{private static final String TAG = "RingBroadcastReceiver";public static final String VIBRATE_CHANGED = "com.yarin.android.RingProfile.VIBRATE_CHANGED";public static final String SILENT_CHANGED= "com.yarin.android.RingProfile.SILENT_CHANGED";public static final String RV_CHANGED = "com.yarin.android.RingProfile.RV_CHANGED";public static final String RING_CHANGED = "com.yarin.android.RingProfile.RING_CHANGED";public static final int REQUEST_CODE= 0;@Overridepublic void onReceive(Context context, Intent intent){AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);int checkedId = intent.getIntExtra("checkedId", 0);Log.e(TAG, checkedId + intent.getAction());// 切换情景模式switch (checkedId){case R.id.ring_and_vibrate01:case R.id.ring_and_vibrate02:ringAndVibrate(audio);break;case R.id.vibrate01:case R.id.vibrate02:vibrate(audio);break;case R.id.silent01:case R.id.silent02:silent(audio);break;default:ring(audio);break;}}// 铃声和震动protected void ringAndVibrate(AudioManager audio){audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON);audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON);}// 铃声protected void ring(AudioManager audio){audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF);}// 震动protected void vibrate(AudioManager audio){audio.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON);audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON);}// 静音protected void silent(AudioManager audio){audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF);}}

3:main.xml

<?xml version="1.0" encoding="utf-8"?><TabHost xmlns:android="http://schemas.android.com/apk/res/android"android:id="@android:id/tabhost" android:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayout android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent"><TabWidget android:id="@android:id/tabs"android:layout_width="fill_parent" android:layout_height="wrap_content" /><FrameLayout android:id="@android:id/tabcontent"android:layout_width="fill_parent" android:layout_height="fill_parent"><RadioGroup android:id="@+id/RadioGroup01"android:orientation="vertical" android:layout_height="wrap_content"android:layout_width="wrap_content" android:layout_centerInParent="true"><RadioButton android:text="@string/ring_and_vibrate"android:id="@+id/ring_and_vibrate01" android:layout_width="fill_parent"android:textSize="24sp" android:paddingLeft="50sp" /><RadioButton android:text="@string/ring" android:id="@+id/ring01"android:layout_width="fill_parent" android:textSize="24sp"android:paddingLeft="50sp" android:paddingRight="50sp" /><RadioButton android:text="@string/vibrate" android:id="@+id/vibrate01"android:layout_width="fill_parent" android:textSize="24sp"android:paddingLeft="50sp" android:paddingRight="50sp" /><RadioButton android:text="@string/silent" android:id="@+id/silent01"android:layout_width="fill_parent" android:textSize="24sp"android:paddingLeft="50sp" android:paddingRight="50sp" /></RadioGroup><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/RelativeLayout01" android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent"android:padding="12sp"><TextView android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="@string/help"android:textSize="20px" android:textStyle="bold" android:id="@+id/help"></TextView><TimePicker android:id="@+id/timePkr"android:layout_below="@id/help" android:layout_width="wrap_content"android:layout_height="wrap_content"></TimePicker><RadioGroup android:orientation="vertical" android:id="@+id/RadioGroup02"android:layout_below="@id/timePkr" android:layout_height="wrap_content"android:layout_width="wrap_content" android:layout_centerInParent="true"><RadioButton android:text="@string/ring_and_vibrate"android:id="@+id/ring_and_vibrate02" android:layout_width="fill_parent"android:textSize="24sp" android:paddingLeft="50sp" /><RadioButton android:text="@string/ring" android:id="@+id/ring02"android:layout_width="fill_parent" android:textSize="24sp"android:paddingLeft="50sp" android:paddingRight="50sp" /><RadioButton android:text="@string/vibrate" android:id="@+id/vibrate02"android:layout_width="fill_parent" android:textSize="24sp"android:paddingLeft="50sp" android:paddingRight="50sp" /><RadioButton android:text="@string/silent" android:id="@+id/silent02"android:layout_width="fill_parent" android:textSize="24sp"android:paddingLeft="50sp" android:paddingRight="50sp" /></RadioGroup></RelativeLayout><AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/AbsoluteLayout03" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextView android:id="@+id/myText1" android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="情景模式:"android:textSize="16sp" android:layout_x="20px" android:layout_y="42px"></TextView><ImageView android:id="@+id/myImage" android:layout_width="48px"android:layout_height="48px" android:layout_x="110px"android:layout_y="32px"></ImageView><TextView android:id="@+id/myText2" android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="声音音量:"android:textSize="16sp" android:layout_x="20px" android:layout_y="102px"></TextView><ProgressBar android:id="@+id/myProgress"style="?android:attr/progressBarStyleHorizontal"android:layout_width="160dip" android:layout_height="wrap_content"android:max="7" android:progress="5" android:layout_x="110px"android:layout_y="102px"></ProgressBar><ImageButton android:id="@+id/downButton"android:layout_width="100px" android:layout_height="100px"android:layout_x="50px" android:layout_y="162px" android:src="@drawable/down"></ImageButton><ImageButton android:id="@+id/upButton"android:layout_width="100px" android:layout_height="100px"android:layout_x="150px" android:layout_y="162px" android:src="@drawable/up"></ImageButton><ImageButton android:id="@+id/normalButton"android:layout_width="60px" android:layout_height="60px"android:layout_x="50px" android:layout_y="272px" android:src="@drawable/icon"></ImageButton><ImageButton android:id="@+id/muteButton"android:layout_width="60px" android:layout_height="60px"android:layout_x="120px" android:layout_y="272px" android:src="@drawable/mute"></ImageButton><ImageButton android:id="@+id/vibrateButton"android:layout_width="60px" android:layout_height="60px"android:layout_x="190px" android:layout_y="272px" android:src="@drawable/vibrate"></ImageButton></AbsoluteLayout></FrameLayout></LinearLayout></TabHost>

4:AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="com.yarin.android.RingProfile"      android:versionCode="1"      android:versionName="1.0">    <application android:icon="@drawable/icon" android:label="@string/app_name">        <activity android:name=".RingProfile"                  android:label="@string/app_name">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>       <receiver android:name="RingBroadcastReceiver">            <intent-filter>               <action android:name="com.yarin.android.RingProfile.RV_CHANGED" />               <action android:name="com.yarin.android.RingProfile.RING_CHANGED" />               <action android:name="com.yarin.android.RingProfile.VIBRATE_CHANGED" />               <action android:name="com.yarin.android.RingProfile.SILENT_CHANGED" />            </intent-filter>        </receiver>    </application>    <uses-sdk android:minSdkVersion="5" /></manifest> 

更多相关文章

  1. Android(安卓)三角标签(自定义Textview控件)
  2. Android之Camera预览
  3. Android设置RadioButton在文字的右边
  4. android 权限
  5. Android(安卓)Path的使用
  6. android 创建实时文件夹
  7. android 实现拍照有2种方式
  8. Android(安卓)崩溃日志的获取方式
  9. android创建设置页面

随机推荐

  1. Mysql inner join on的用法实例(必看)
  2. MySQL 触发器详解及简单实例
  3. mysql服务启动却连接不上的解决方法
  4. mysql取得datetime类型的数据,后面会跟个
  5. InnoDB的关键特性-插入缓存,两次写,自适
  6. InnoDb 体系架构和特性详解 (Innodb存储
  7. 浅谈innodb的索引页结构,插入缓冲,自适应
  8. 详谈innodb的锁(record,gap,Next-Key loc
  9. 老生常谈mysql event事件调度器(必看篇)
  10. 超简单的qps统计方法(推荐)