`

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系统中,"手机翻转静音"是一种常见的功能,允许用户通过快速翻转手机来切换音频状态,比如在会议或电影院等场合快速将手机调至静音。本教程将详细讲解如何在Android应用中实现这一功能。 一、基础概念 1. ...

    通过重力感应实现 手机翻转静音

    在Android系统中,实现“手机翻转静音”这一功能主要涉及到传感器管理和事件处理机制。重力感应器(Gravity Sensor)是实现这一功能的关键,它能够检测设备在三维空间中的加速度变化,从而得知手机的翻转状态。下面...

    Android的SensorEventListener例子(摇晃手机)

    在这个例子中,我们将聚焦于如何通过实现SensorEventListener来检测手机的摇晃动作。 首先,我们需要在AndroidManifest.xml文件中添加对传感器权限的请求: ```xml ``` 然后,在我们的Activity或Service中,我们...

    android 利用重力感应监听

    通过集成传感器API,开发者可以获取设备的重力变化数据,从而实现如来电时翻转手机静音这样的实用功能。下面将详细介绍如何在Android中利用重力感应监听以及相关的知识点。 首先,Android系统提供了SensorManager...

    android-SensorEventListener-.zip_SensorEventListener_android

    在Android开发中,SensorEventListener是Android系统提供的一个接口,用于监听设备的各种传感器事件,例如重力感应、加速度计、陀螺仪等。这个接口在处理与设备物理运动相关的应用程序时非常关键,如游戏、健康应用...

    安卓手机晃动摇动震动源码(加速度侦测)

    在安卓平台上,开发一款能够检测手机晃动摇动并触发相应震动功能的应用,是常见的互动式设计,例如在游戏或互动应用中。这个源码着重于使用手机的加速度传感器来实现这一功能。加速度传感器是一种硬件设备,它可以...

    安卓gridview相关相关-手机摇一摇震动刷新支持ListViewGridViewWebView.rar

    这个压缩包“安卓gridview相关相关-手机摇一摇震动刷新支持ListView GridView WebView.rar”包含了实现手机摇一摇触发震动并刷新功能的示例代码,该功能不仅适用于GridView,还扩展到ListView和WebView。 首先,...

    FliptoMute:将手机正面朝下时使手机静音的 Android 应用

    《FliptoMute:利用Java打造Android手机翻转静音功能》 FliptoMute是一款专为Android用户设计的应用程序,它巧妙地利用了手机的运动传感器来实现一个实用的功能——当用户将手机翻转至屏幕朝下时,手机会自动切换到...

    android翻转手机闹铃停止源码

    在Android中,我们可以注册一个`SensorEventListener`,并通过`SensorManager`的`registerListener()`方法来监听重力传感器的数据。在事件回调函数`onSensorChanged(SensorEvent event)`中,我们可以获取到设备当前...

    手机摇一摇震动刷新

    在Android开发中,“手机摇一摇震动刷新”是一种常见的用户交互功能,允许用户通过晃动手机来触发某个操作,如刷新界面。这个功能通常应用于新闻应用、社交应用或者任何需要实时更新内容的场景。下面我们将深入探讨...

    android震动传感器之摇一摇

    在Android平台上,开发一个“摇一摇”功能的应用程序,主要涉及到的是设备的传感器技术,尤其是加速度计和震动传感器。下面将详细讲解这个过程涉及的技术点。 首先,我们需要了解Android系统的传感器框架。Android...

    Android 利用重力感应调整手机模式

    这个功能可以让用户在不手动操作的情况下,轻松切换手机的状态,例如从正常模式到震动模式。 首先,我们需要了解Android的Sensor API。Android系统提供了SensorManager服务,它允许应用注册监听器以接收传感器事件...

    使用android手机陀螺仪传感器获得手机自身旋转的角度

    在Android平台上,开发一款应用程序来获取手机陀螺仪传感器数据并计算手机相对于初始位置的旋转角度是一项技术性任务。陀螺仪传感器是移动设备中的一种关键硬件,它能够检测设备在三维空间中的角速度变化,这对于...

    WeiChatShakeDemo:如果对于实现微信摇一摇的功能或者手机震动有兴趣的话, 可以参考看看

    在Android平台上实现这样的功能,主要涉及到两个关键的技术点:重力感应器(Accelerometer)的使用和手机震动(Vibrator)的控制。下面将详细介绍这两个方面。 1. **重力感应器的使用** Android系统提供了一个...

    Android操作铃声、震动与传感器的代码例子

    SensorEventListener listener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { // 处理加速度数据 } @Override public void onAccuracyChanged(Sensor sensor, ...

    摇一摇,震动、声音

    在这个功能中,设备会模拟真实的物理摇晃,配合旋转动画、震动反馈和声音效果,增强用户的真实感。下面我们将详细讨论如何在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 摇一摇 震动

    本文将深入探讨如何在Android应用中实现“摇一摇”监听,并结合震动效果,为用户提供更为真实的交互体验。 首先,我们要理解Android中的Sensor类和SensorManager服务。Sensor类是Android提供的一个接口,用于获取...

Global site tag (gtag.js) - Google Analytics