我们先要做的就是创建SensorManager对象完事我们在声明一个以私有类成员存储AudioManager模式,下面就是我们要创建SensorManager对象,取得SENSOR_SERVICE的服务了,我们在用switch来设置一下正常模式、正常模式、正常模式。我们现在就可以设置扑捉事件了,完事我们在进行判断,最后我们在单独写个类,也就是封装一下三个模式下(正常模式、正常模式、正常模式)都干谢什么。最后大家可要记住了,我们要写一个onPause类,这个类的主要目的就的覆盖onPause事件,取消mSensorListener 。大家可要记住了,一定要写onPause类,要不在运行的时候,就会出现错误。往往简单的地方就是爱犯错的地方。那么我们就来看看代码吧。
package eoe.phone;
import android.app.Activity;
import android.content.Context;
import android.hardware.SensorListener;
import android.hardware.SensorManager;
import android.media.AudioManager;
import android.os.Bundle;
import android.widget.TextView;
public class EX06_12 extends Activity
{
/* 创建SensorManager对象 */
private SensorManager mSensorManager01;
private TextView mTextView01;
/* 以私有类成员存储AudioManager模式 */
private int strRingerMode;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView01 = (TextView)findViewById(R.id.myTextView1);
/* 创建SensorManager对象,取得SENSOR_SERVICE服务 */
mSensorManager01 =
(SensorManager)getSystemService(Context.SENSOR_SERVICE);
/* 取得现在的AudioManager模式 */
GetAudioManagerMode();
/* 依据现在的AudioManager模式,显示于TextView当中 */
switch(strRingerMode)
{
/* 正常模式 */
case AudioManager.RINGER_MODE_NORMAL:
mTextView01.setText(R.string.str_normal_mode);
break;
/* 静音模式 */
case AudioManager.RINGER_MODE_SILENT:
mTextView01.setText(R.string.str_silent_mode);
break;
/* 震动模式 */
case AudioManager.RINGER_MODE_VIBRATE:
mTextView01.setText(R.string.str_vibrate_mode);
break;
}
}
/* 创建SensorListener捕捉onSensorChanged事件 */
private final SensorListener mSensorListener =
new SensorListener()
{
@Override
public void onSensorChanged(int sensor, float[] values)
{
// TODO Auto-generated method stub
//float fRollAngle = values[SensorManager.DATA_X];
/* 取得Y平面左右倾斜的Pitch角度 */
float fPitchAngle = values[SensorManager.DATA_Y];
/* 正面向下(Y轴旋转),经实验结果为小于-120为翻背面 */
if(fPitchAngle<-120)
{
/* 先设置为静音模式 */
ChangeToSilentMode();
/* 再设置为震动模式 */
ChangeToVibrateMode();
/* 判断铃声模式 */
switch(strRingerMode)
{
/* 正常模式 */
case AudioManager.RINGER_MODE_NORMAL:
mTextView01.setText(R.string.str_normal_mode);
break;
/* 静音模式 */
case AudioManager.RINGER_MODE_SILENT:
mTextView01.setText(R.string.str_silent_mode);
break;
/* 震动模式 */
case AudioManager.RINGER_MODE_VIBRATE:
mTextView01.setText(R.string.str_vibrate_mode);
break;
}
}
else
{
/* 正面向上(Y轴旋转),经实验结果为大于-120为翻正面 */
/* 更改为正常模式 */
ChangeToNormalMode();
/* 调用更改模式后,再一次确认手机的模式为何 */
switch(strRingerMode)
{
case AudioManager.RINGER_MODE_NORMAL:
mTextView01.setText(R.string.str_normal_mode);
break;
case AudioManager.RINGER_MODE_SILENT:
mTextView01.setText(R.string.str_silent_mode);
break;
case AudioManager.RINGER_MODE_VIBRATE:
mTextView01.setText(R.string.str_vibrate_mode);
break;
}
}
}
@Override
public void onAccuracyChanged(int sensor, int values)
{
// TODO Auto-generated method stub
}
};
/* 取得当下的AudioManager模式 */
private void GetAudioManagerMode()
{
try
{
/* 创建AudioManager对象,取得AUDIO_SERVICE */
AudioManager audioManager =
(AudioManager)getSystemService(Context.AUDIO_SERVICE);
if (audioManager != null)
{
/* RINGER_MODE_NORMAL |
RINGER_MODE_SILENT |
RINGER_MODE_VIBRATE */
strRingerMode = audioManager.getRingerMode();
}
}
catch(Exception e)
{
mTextView01.setText(e.toString());
e.printStackTrace();
}
}
/* 更改为静音模式 */
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);
strRingerMode = audioManager.getRingerMode();
}
}
catch(Exception e)
{
mTextView01.setText(e.toString());
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 */
strRingerMode = audioManager.getRingerMode();
}
}
catch(Exception e)
{
mTextView01.setText(e.toString());
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);
strRingerMode = audioManager.getRingerMode();
}
}
catch(Exception e)
{
mTextView01.setText(e.toString());
e.printStackTrace();
}
}
@Override
protected void onResume()
{
// TODO Auto-generated method stub
/* 注册一个SensorListener的Listener */
/* 传入Sensor模式与rate */
mSensorManager01.registerListener
(
mSensorListener,
SensorManager.SENSOR_ORIENTATION,
SensorManager.SENSOR_DELAY_NORMAL
);
super.onResume();
}
@Override
protected void onPause()
{
// TODO Auto-generated method stub
/* 于覆盖onPause事件,取消mSensorListener */
mSensorManager01.unregisterListener(mSensorListener);
super.onPause();
}
}
分享到:
相关推荐
6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的状态——BroadcastReceiver聆听PendingIntent 6.15 后台服务送出...
6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的状态——BroadcastReceiver聆听PendingIntent 6.15 后台服务送出...
6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的状态——BroadcastReceiver聆听PendingIntent 6.15 后台服务送出...
6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的状态——BroadcastReceiver聆听PendingIntent 6.15 后台服务送出...
6.10 实现可定时响起的闹钟——PendingIntent与AlarmManager的运用 6.11 黑名单来电自动静音——PhoneStateListener与AudioManager 6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定...
6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的状态——BroadcastReceiver聆听PendingIntent 6.15 后台服务送...
6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的状态——BroadcastReceiver聆听PendingIntent 6.15 后台服务送出...
6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的状态——BroadcastReceiver聆听PendingIntent 6.15 后台服务送出...
6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的状态——BroadcastReceiver聆听PendingIntent 6.15 后台服务送出...
6.12 手机翻背面即静音震动——SensorListener及AudioManager整合应用 6.13 指定时间置换桌面背景——多AlarmManager事件处理 6.14 判断发送短信后的状态——BroadcastReceiver聆听PendingIntent 6.15 后台服务送出...
在Android中,系统提供了AudioManager类来管理音频设备和音频流。然而,Android本身并不直接提供测量环境音量分贝值的功能,因为这通常需要硬件支持,而并非所有设备都具备这样的硬件。但你可以使用第三方库如...