实现思路
- 通过加速度传感器获取 X,Y,Z 三轴所受的重力
- 计算在指定的时间段内,手机在 X,Y,Z 矢量和的方向上的速度
- 如果速度大于指定的速度阀值,判定手机当前在剧烈抖动;并结束当前方法
- 通过Z轴的改变判断手机是否发生反转,如果是调用AudioManager的
setRingerMode(AudioManager.RINGER_MODE_SILENT)
方法使手机静音
代码
public class MainActivity extends AppCompatActivity {
SensorManager mSensorManager = null;
AccelerometerSilentListener mAccelerometerSilentListener = null;
AudioManager mAudioManager = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mSensorManager