我有一个应用程序,通过使用AudioManager将手机静音,并使用此代码将铃声模式设置为静音:
AudioManager audioManager =
(AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
try {
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT)
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这适用于Android 6,但现在使用Android 7,我收到以下错误:
System.err: java.lang.SecurityException: Not allowed to change Do Not Disturb state
System.err: at android.os.Parcel.readException(Parcel.java:1683)
System.err: at android.os.Parcel.readException(Parcel.java:1636)
System.err: at android.media.IAudioService$Stub$Proxy.setRingerModeExternal(IAudioService.java:962)
System.err: at android.media.AudioManager.setRingerMode(AudioManager.java:1022)
System.err: at controllers.SearchResultController.mutePhone(SearchResultController.java:185)
Run Code Online (Sandbox Code Playgroud)
有什么新的权限我需要要求才能使这项工作?
我查看了Android权限列表,但找不到任何相似的内容.
之前已经问过,但似乎没有人有解决方案:将SpeechRecognizer的哔声静音
不过,我仍然想知道是否有人知道如何静音SpeechRecognizer的哔哔声?
我创建了speechRecognizer对象:private SpeechRecognizer sr = SpeechRecognizer.createSpeechRecognizer (this);
然后在我的课堂上我像这样实例化speechRecognizer
sr.setRecognitionListener(new listener());
Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getApplication()
.getClass().getName());
i.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 6);
i.putExtra(RecognizerIntent.EXTRA_PROMPT, "");
i.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 7000);
sr.startListening(i);
Run Code Online (Sandbox Code Playgroud)
任何有好主意的人?我研究过我可以创建AudioManager(AudioManager mAudioManager)的对象,然后使用setStreamSolo(),我可以静音.但我不确定如何实现这一点.我将它添加到我的speechRecognizer实例化代码中,没有任何反应.这是我应该从我的主课那里打电话的吗?
mAudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true);
Run Code Online (Sandbox Code Playgroud)
先感谢您.
如何关闭来电的电话铃声?这可以通过编程方式完成吗?现在我使用下面的代码,但它不起作用:
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
Run Code Online (Sandbox Code Playgroud)