`

SensorEventListener手机翻背静音震动

 
阅读更多

添加震动权限

 

<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();
	}

}
 

翻背之前

 

翻背之后

  • 大小: 11.6 KB
  • 大小: 11.9 KB
分享到:
评论

相关推荐

    手机翻背面即静音振动

    当程序发现手机被翻成背面时,就会将铃声模式更改为振动模式,如在上班会议等其他场合中忘记将铃声调整为静音振动时,就可以利用这个程序快速地关闭手机铃声。 分享参考自Android SDK开发范例大全第3版。

    Android的SensorEventListener例子(摇晃手机)

    NULL 博文链接:https://a2012s.iteye.com/blog/1447688

    android-SensorEventListener-.zip_SensorEventListener_android

    android 重力感应监听,代码示例,可以参考。

    Android 手机系统中的重力传感器+源码

     //x&gt;0 说明当前手机左翻 x右翻  y = event.values[1]; //手机纵向翻滚  //y&gt;0 说明当前手机下翻 y上翻  z = event.values[2]; //屏幕的朝向  //z&gt;0 手机屏幕朝上 z手机屏幕朝下  arc_x -= x;//备注2  ...

    Android传感器SensorEventListener之加速度传感器

    这个类(我的是Activity中)继承SensorEventListener接口 先获取传感器对象,再获取传感器对象的类型 //获取传感器管理对象 SensorManager mSensorManager = (SensorManager)getSystemService(Context.SENSOR_...

    Android重力传感器源码

    //x&gt;0 说明当前手机左翻 x右翻 y = event.values[1]; //手机纵向翻滚 //y&gt;0 说明当前手机下翻 y上翻 z = event.values[2]; //屏幕的朝向 //z&gt;0 手机屏幕朝上 z手机屏幕朝下 arc_x -= x;//备注2 arc_y += y; ...

    android重力传感器源码

    //x&gt;0 说明当前手机左翻 x右翻 y = event.values[1]; //手机纵向翻滚 //y&gt;0 说明当前手机下翻 y上翻 z = event.values[2]; //屏幕的朝向 //z&gt;0 手机屏幕朝上 z手机屏幕朝下 arc_x -= x;//备注2 arc_y += y; ...

    Android-Orientation-Sensor,android传感器定向库使用所有可用的设备传感器,帮助您获得更精确的定向矢量值。.zip

    android传感器定向库使用所有可用的设备传感器,帮助您获得更精确的定向矢量值。

    Android实现检测手机摇晃的监听器

    android 检测手机摇晃的监听器,实现代码如下所示: public class ShakeListener implements SensorEventListener { // 速度阈值,当摇晃速度达到这值后产生作用 private static final int SPEED_SHRESHOLD = ...

    Android 听筒模式的具体实现实例

    一、利用距离感应器监听听筒靠近耳朵事件准确的说距离感应器并不能监听到你是否把手机靠近耳朵,也许是你用手挡在了距离感应器前面,但这不是我们关心的,我们关心的是当你的耳朵靠近听筒时,我们要捕获到这个事件 ...

    Android摇一摇demo

    本例是结合摇一摇的场景介绍android中SensorManager和SensorEventListener类的使用

    骰子搖一搖功能

    搖一搖骰子功能,記得開震動和反饋噢 基於SensorEventListener,surfaceview使用

    Android通过距离传感器控制屏幕熄灭案例代码

    public class MainActivity extends Activity implements SensorEventListener{ public static final String TAG = "SensorTest"; private SensorManager sensorManager; private TextView tv; private ...

    android实现手机传感器调用

    android传感器使用的demo,包括光线传感器,加速度传感器,距离传感器和方向传感器。 demo:下载地址 源码: ... import android.app....import android.hardware.SensorEventListener; import android.hardware.Sensor

    监听摇一摇SensorManager

    监听摇一摇SensorManager @Override protected void onStop() { super.onStop(); if (sensorManager != null) {// 取消监听器 sensorManager.unregisterListener(sensorEventListener); } }

    Android利用传感器仿微信摇一摇功能

    传感器 简单的介绍一下传感器: 就是设备用来感知周边环境变化的硬件。 Android中的传感器包含在...④ SensorEventListener:传感器的监听,主要监测传感器数据变化,精度变化… Android播放音频系统提供了两种方式 ①

    Android 距离感应控制Audio输出通道

    距离感应器:继承SensorEventListener这个监听,重写onSensorChanged方法 * 2. 检测耳机插入和拔出:HeadsetPlugReceiver监听广播AudioManager.ACTION_AUDIO_BECOMING_NOISY和"android.intent.action.HEADSET_PLUG...

    基于Android老年社交娱乐系统

    针对一个老年社交娱乐...利用 Eclipse 集成开发环境,采用xml布局、ViewPager、PagerAdaper、Animation动画、ScrollView、读取xml文件、jsoup解析web网页内容、Android Location、重力感应监听SensoreventListener等

    android结合数据库进行摇一摇的实例

    DBAdapter.java ——数据库工具类 Food.java ——Food类及其属性(id和content) MainActivity.java ——数据库增删的activity ...ShakeListener.java ——实现SensorEventListener接口的摇一摇工具类

Global site tag (gtag.js) - Google Analytics