添加震动权限
<uses-permission android:name="android.permission.VIBRATE" />
public class TurnSilent extends Activity {
private SensorManager mSensorManager01;
private TextView mTextView01;
private int audioManagerMode;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.turn_silent);
mTextView01 = (TextView) findViewById(R.id.myTextView1);
mSensorManager01 = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
audioManagerMode = getAudioManagerMode();
setTextByAudioManagerMode(audioManagerMode);
}
private void setTextByAudioManagerMode(int audioManagerMode) {
switch (audioManagerMode) {
case AudioManager.RINGER_MODE_NORMAL:
mTextView01.setText("正常模式");
break;
case AudioManager.RINGER_MODE_SILENT:
mTextView01.setText("静音模式");
break;
case AudioManager.RINGER_MODE_VIBRATE:
mTextView01.setText("震动模式");
break;
}
}
private int getAudioManagerMode() {
int ringerMode = 0;
try {
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (audioManager != null) {
/* RINGER_MODE_NORMAL | RINGER_MODE_SILENT | RINGER_MODE_VIBRATE */
ringerMode = audioManager.getRingerMode();
}
} catch (Exception e) {
e.printStackTrace();
}
return ringerMode;
}
private final SensorEventListener mSensorListener = new SensorEventListener() {
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
// float fRollAngle = event.values[SensorManager.DATA_X];
/* 取得Y平面倾斜的Pitch角度 */
float fPitchAngle = event.values[SensorManager.DATA_Y];
/* 正面(Y轴旋转),经实验结果为小于-120为翻背面 */
if (fPitchAngle < -120) {
/* 因设定为静音模式 */
ChangeToSilentMode();
/* 设定为震动模式 */
ChangeToVibrateMode();
setTextByAudioManagerMode(audioManagerMode);
} else {
/* 正面守勺(Y轴旋转),经实验结果为大于-120为翻正面 */
/* 变更为正常模式 */
ChangeToNormalMode();
setTextByAudioManagerMode(audioManagerMode);
}
}
}
};
/* 变更为静音模式 */
private void ChangeToSilentMode() {
try {
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);
audioManagerMode = audioManager.getRingerMode();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/* 变更为震动模式 */
private void ChangeToVibrateMode() {
try {
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 */
audioManagerMode = audioManager.getRingerMode();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/* 变更为正常模式 */
private void ChangeToNormalMode() {
try {
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);
audioManagerMode = audioManager.getRingerMode();
}
} catch (Exception e) {
e.printStackTrace();
}
}
//重写以下的两个方法
protected void onResume() {
/* 注册几个SensorListener的Listener */
/* 传入Sensor模式与rate */
List<Sensor> sensors = mSensorManager01
.getSensorList(Sensor.TYPE_ORIENTATION);
mSensorManager01.registerListener(mSensorListener, sensors.get(0),
SensorManager.SENSOR_DELAY_NORMAL);
super.onResume();
}
protected void onPause() {
/* 重写onPause事件,取消mSensorListener */
mSensorManager01.unregisterListener(mSensorListener);
super.onPause();
}
}
翻背之前
翻背之后