【发布时间】:2011-09-06 09:49:17
【问题描述】:
我的目标是支持 2 个操作:
静音手机(可能启用/禁用振动),因此当收到电话或短信时不会发出噪音
取消静音并将音量恢复到静音前的状态
我该怎么做? AndroidManifest 需要哪些权限?
【问题讨论】:
标签: android android-permissions volume mute
我的目标是支持 2 个操作:
静音手机(可能启用/禁用振动),因此当收到电话或短信时不会发出噪音
取消静音并将音量恢复到静音前的状态
我该怎么做? AndroidManifest 需要哪些权限?
【问题讨论】:
标签: android android-permissions volume mute
这是振动进入清单文件的权限
<uses-permission android:name="android.permission.VIBRATE" />
这是为了让设备进入静音模式并振动
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
这是为了进入振铃模式
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
audioManager.setStreamVolume(AudioManager.STREAM_RING, maxVolume, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
【讨论】:
public void changeRingerMode(Context context){
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
/**
* To Enable silent mode.....
*/
audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);
/**
* To Enable Ringer mode.....
*/
audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}
【讨论】:
如果您想要禁用声音并将声音设置恢复到以前的状态,这对我有用。
static int ringstate = 0;
private void soundOn(boolean off){
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if(off)
{ //turn off ringing/sound
//get the current ringer mode
ringstate = audio.getRingerMode();
if(ringstate!=AudioManager.RINGER_MODE_SILENT)
audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);//turn off
}
else
{
//restore previous state
audio.setRingerMode(ringstate);
}
}
应该这样做。
【讨论】: