EX06_12.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:6k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex06_12;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.hardware.SensorListener;
  5. import android.hardware.SensorManager;
  6. import android.media.AudioManager;
  7. import android.os.Bundle;
  8. import android.widget.TextView;
  9. public class EX06_12 extends Activity
  10. {
  11.   /* 创建SensorManager对象 */
  12.   private SensorManager mSensorManager01;
  13.   private TextView mTextView01;
  14.   
  15.   /* 以私有类成员存储AudioManager模式 */
  16.   private int strRingerMode;
  17.   
  18.   /** Called when the activity is first created. */
  19.   @Override
  20.   public void onCreate(Bundle savedInstanceState)
  21.   {
  22.     super.onCreate(savedInstanceState);
  23.     setContentView(R.layout.main);
  24.     
  25.     mTextView01 = (TextView)findViewById(R.id.myTextView1);
  26.     
  27.     /* 创建SensorManager对象,取得SENSOR_SERVICE服务 */
  28.     mSensorManager01 = 
  29.     (SensorManager)getSystemService(Context.SENSOR_SERVICE);
  30.     
  31.     /* 取得现在的AudioManager模式 */
  32.     GetAudioManagerMode();
  33.     
  34.     /* 依据现在的AudioManager模式,显示于TextView当中 */
  35.     switch(strRingerMode)
  36.     {
  37.       /* 正常模式 */
  38.       case AudioManager.RINGER_MODE_NORMAL:
  39.         mTextView01.setText(R.string.str_normal_mode);
  40.         break;
  41.       /* 静音模式 */
  42.       case AudioManager.RINGER_MODE_SILENT:
  43.         mTextView01.setText(R.string.str_silent_mode);
  44.         break;
  45.       /* 震动模式 */
  46.       case AudioManager.RINGER_MODE_VIBRATE:
  47.         mTextView01.setText(R.string.str_vibrate_mode);
  48.         break;
  49.     }
  50.   }
  51.   
  52.   /* 创建SensorListener捕捉onSensorChanged事件 */
  53.   private final SensorListener mSensorListener = 
  54.                 new SensorListener()
  55.   {
  56.     @Override
  57.     public void onSensorChanged(int sensor, float[] values)
  58.     {
  59.       // TODO Auto-generated method stub
  60.       
  61.       //float fRollAngle = values[SensorManager.DATA_X];
  62.       
  63.       /* 取得Y平面左右倾斜的Pitch角度 */
  64.       float fPitchAngle = values[SensorManager.DATA_Y];
  65.       
  66.       /* 正面向下(Y轴旋转),经实验结果为小于-120为翻背面 */
  67.       if(fPitchAngle<-120)
  68.       {
  69.         /* 先设置为静音模式 */
  70.         ChangeToSilentMode();
  71.         
  72.         /* 再设置为震动模式 */
  73.         ChangeToVibrateMode();
  74.         
  75.         /* 判断铃声模式 */
  76.         switch(strRingerMode)
  77.         {
  78.           /* 正常模式 */
  79.           case AudioManager.RINGER_MODE_NORMAL:
  80.             mTextView01.setText(R.string.str_normal_mode);
  81.             break;
  82.           /* 静音模式 */
  83.           case AudioManager.RINGER_MODE_SILENT:
  84.             mTextView01.setText(R.string.str_silent_mode);
  85.             break;
  86.           /* 震动模式 */
  87.           case AudioManager.RINGER_MODE_VIBRATE:
  88.             mTextView01.setText(R.string.str_vibrate_mode);
  89.             break;
  90.         }
  91.       }
  92.       else
  93.       {
  94.         /* 正面向上(Y轴旋转),经实验结果为大于-120为翻正面 */
  95.         /* 更改为正常模式 */
  96.         ChangeToNormalMode();
  97.         
  98.         /* 调用更改模式后,再一次确认手机的模式为何 */
  99.         switch(strRingerMode)
  100.         {
  101.           case AudioManager.RINGER_MODE_NORMAL:
  102.             mTextView01.setText(R.string.str_normal_mode);
  103.             break;
  104.           case AudioManager.RINGER_MODE_SILENT:
  105.             mTextView01.setText(R.string.str_silent_mode);
  106.             break;
  107.           case AudioManager.RINGER_MODE_VIBRATE:
  108.             mTextView01.setText(R.string.str_vibrate_mode);
  109.             break;
  110.         }
  111.       }
  112.     }
  113.     
  114.     @Override
  115.     public void onAccuracyChanged(int sensor, int values)
  116.     {
  117.       // TODO Auto-generated method stub
  118.       
  119.     }
  120.   };
  121.   
  122.   /* 取得当下的AudioManager模式 */
  123.   private void GetAudioManagerMode()
  124.   {
  125.     try
  126.     {
  127.       /* 创建AudioManager对象,取得AUDIO_SERVICE */
  128.       AudioManager audioManager = 
  129.       (AudioManager)getSystemService(Context.AUDIO_SERVICE);
  130.       
  131.       if (audioManager != null)
  132.       {
  133.         /* RINGER_MODE_NORMAL | 
  134.            RINGER_MODE_SILENT | 
  135.            RINGER_MODE_VIBRATE */
  136.            
  137.         strRingerMode = audioManager.getRingerMode();
  138.       }
  139.     }
  140.     catch(Exception e)
  141.     {
  142.       mTextView01.setText(e.toString());
  143.       e.printStackTrace();
  144.     }
  145.   }
  146.   
  147.   /* 更改为静音模式 */
  148.   private void ChangeToSilentMode()
  149.   {
  150.     try
  151.     {
  152.       AudioManager audioManager =
  153.       (AudioManager)getSystemService(Context.AUDIO_SERVICE);
  154.       
  155.       if (audioManager != null)
  156.       {
  157.         /* RINGER_MODE_NORMAL | 
  158.            RINGER_MODE_SILENT | 
  159.            RINGER_MODE_VIBRATE */
  160.            
  161.         audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
  162.         strRingerMode = audioManager.getRingerMode();
  163.       }
  164.     }
  165.     catch(Exception e)
  166.     {
  167.       mTextView01.setText(e.toString());
  168.       e.printStackTrace();
  169.     }
  170.   }
  171.   
  172.   /* 更改为震动模式 */
  173.   private void ChangeToVibrateMode()
  174.   {
  175.     try
  176.     {
  177.       AudioManager audioManager = 
  178.       (AudioManager)getSystemService(Context.AUDIO_SERVICE);
  179.       
  180.       if (audioManager != null)
  181.       {
  182.         /* 调用setRingerMode方法,设置模式 */
  183.         audioManager.setRingerMode
  184.         (
  185.           AudioManager.RINGER_MODE_VIBRATE
  186.         );
  187.         /* RINGER_MODE_NORMAL | 
  188.            RINGER_MODE_SILENT | 
  189.            RINGER_MODE_VIBRATE */
  190.         strRingerMode = audioManager.getRingerMode();
  191.       }
  192.     }
  193.     catch(Exception e)
  194.     {
  195.       mTextView01.setText(e.toString());
  196.       e.printStackTrace();
  197.     }
  198.   }
  199.   
  200.   /* 更改为正常模式 */
  201.   private void ChangeToNormalMode()
  202.   {
  203.     try
  204.     {
  205.       AudioManager audioManager = 
  206.       (AudioManager)getSystemService(Context.AUDIO_SERVICE);
  207.       
  208.       if (audioManager != null)
  209.       {
  210.         /* RINGER_MODE_NORMAL | 
  211.            RINGER_MODE_SILENT | 
  212.            RINGER_MODE_VIBRATE */
  213.         audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
  214.         strRingerMode = audioManager.getRingerMode();
  215.       }
  216.     }
  217.     catch(Exception e)
  218.     {
  219.       mTextView01.setText(e.toString());
  220.       e.printStackTrace();
  221.     }
  222.   }
  223.   
  224.   @Override
  225.   protected void onResume()
  226.   {
  227.     // TODO Auto-generated method stub
  228.     
  229.     /* 注册一个SensorListener的Listener */ 
  230.     /* 传入Sensor模式与rate */
  231.     mSensorManager01.registerListener
  232.     (
  233.       mSensorListener,
  234.       SensorManager.SENSOR_ORIENTATION,
  235.       SensorManager.SENSOR_DELAY_NORMAL
  236.     );
  237.     super.onResume();
  238.   }
  239.   
  240.   @Override
  241.   protected void onPause()
  242.   {
  243.     // TODO Auto-generated method stub
  244.     
  245.     /* 于覆盖onPause事件,取消mSensorListener */
  246.     mSensorManager01.unregisterListener(mSensorListener);
  247.     super.onPause();
  248.   }
  249. }