主要是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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步