目前我正在使用以下功能将手机置于静音模式:
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
但我注意到在Lollipop中它将手机置于“优先模式”,通知栏顶部有一颗小星星。但我希望它是100%无声而不是“优先模式”。这可能吗?将Lollipop设置为100%无声?
我试图将setRingerMode设置为0,如此
audioManager.setRingerMode(0);
但是它仍然给了我明星而不是说话者通过它的线,它说在它下面用括号中的(优先级)振动。
答案 0 :(得分:5)
在Android 5.0.X中,调用setRingerMode(RINGER_MODE_SILENT)
将(i)触发"优先模式",这将(ii)随后触发将振铃模式更改回RINGER_MODE_NORMAL。
利用Android 5.0.X中的错误进行残酷的解决方法是在触发上述操作(ii)后的短时间内(比如500毫秒)再次发出setRingerMode(RINGER_MODE_SILENT)
来电。但这当然不合适,应该停止在Android 5.1.X中工作。
在5.X中实现100%静音的正确方法是切换到"无"中断模式。这可以通过创建扩展NotificationListenerService
的服务,注册它,并通过调用服务中的requestInterruptionFilter(INTERRUPTION_FILTER_NONE)
来提供设置中断模式的功能来实现。 Here (Noyze app)就是一个例子。然后,您可以从活动中调用该功能以切换到该模式。
为此,您需要BIND_NOTIFICATION_LISTENER_SERVICE
权限,以及用户明确授予通知访问权限。
警告:您可能知道INTERRUPTION_FILTER_NONE
真的意味着100%沉默,闹钟将停止工作。
答案 1 :(得分:0)
Google已从棒棒糖中移除了静音模式。这里is the link to official android issue page。
将设备设置为RINGER_MODE_SILENT会导致设备进入 新的优先模式。如果设置,设备将退出优先模式 到RINGER_MODE_NORMAL或RINGER_MODE_VIBRATE。
您详细了解here。
答案 2 :(得分:0)
我已经通过调用setRingerMode(AudioManager.RINGER_MODE_SILENT)
两次解决了这个问题,因为Lollipop首先将设备置于优先模式而不是静音模式。
final AudioManager audiomanage = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audiomanage.setRingerMode(AudioManager.RINGER_MODE_SILENT);
new Thread(new Runnable() {
public void run()
{
try
{
Thread.sleep(100);
audiomanage.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}).start();