主要是SensorManager和AudioManager的应用

private SensorManager mSensorManager01;
private int strRingerMode;

mSensorManager01
= (SensorManager)getSystemService(Context.SENSOR_SERVICE);

 

取得当前的AudioManager模式

  AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
  if (audioManager != null){
     /* RINGER_MODE_NORMAL | RINGER_MODE_SILENT  | RINGER_MODE_VIBRATE */
     strRingerMode = audioManager.getRingerMode();
  }

 

判断当前是何种模式

    switch(strRingerMode){
      /* 正常模式 */
      case AudioManager.RINGER_MODE_NORMAL:
        
        break;
/* 静音模式 */ case AudioManager.RINGER_MODE_SILENT: break;
/* 震动模式 */ case AudioManager.RINGER_MODE_VIBRATE: break; }

 

注册一个SensorEventListener

mSensorManager01.registerListener (mSensorListener,mSensorManager01.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);

 

  /* 建立SensorListener捕捉onSensorChanged事件 */
  private final SensorEventListener mSensorListener = new SensorEventListener(){
    private float x, y, z;
    
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy){}
    
    @Override
    public void onSensorChanged(SensorEvent event){
      synchronized(mSensorManager01){
        switch (event.sensor.getType()){
        case Sensor.TYPE_ACCELEROMETER:
          x = event.values[0];
          y = event.values[1];
          z = event.values[2];
          if(z>9){
            /* 正面向上  变更为正常模式*/
            ChangeToNormalMode();
            
          }else if(z<-9){// 正面向下
            ChangeToSilentMode();// 先设定为静音模式 
            
            ChangeToVibrateMode();// 再设定为震动模式
          }else if(x>9){
            /* 正面向左 */
          }else if(x<-9){
            /* 正面向右 */
          }else if(y>9){
            /* 手掌正翻向自己直立 */
          }else if(y<-9){
            /* 手掌反翻反向直立 */
          }else{
            /* 其他无法判別 */
          }
          break;
        }
      }
    }
  };

 

  /* 变更为静音模式 */
  private void ChangeToSilentMode(){
    AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    if (audioManager != null){
      /* RINGER_MODE_NORMAL | RINGER_MODE_SILENT | RINGER_MODE_VIBRATE */
      audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
      strRingerMode = audioManager.getRingerMode();
    }
  }

 

  /* 变更为震动模式 */
  private void ChangeToVibrateMode(){
      AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
      if (audioManager != null){
        /* 调用setRingerMode方法,设定模式 */
        audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
        /* RINGER_MODE_NORMAL | RINGER_MODE_SILENT | RINGER_MODE_VIBRATE */
        strRingerMode = audioManager.getRingerMode();
      }
  }

 

  /* 变更为正常模式 */
  private void ChangeToNormalMode(){
      AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
      if (audioManager != null){
        /* RINGER_MODE_NORMAL | RINGER_MODE_SILENT | RINGER_MODE_VIBRATE */
        audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
        strRingerMode = audioManager.getRingerMode();
      }
  }

 

取消注册mSensorListener

    mSensorManager01.unregisterListener(mSensorListener);

 

posted on 2015-04-23 10:26  道无涯  阅读(408)  评论(0编辑  收藏  举报