我正在构建一个需要闹钟的应用程序,如果用户将其设备设置为静音或设置为免打扰,我想知道如何覆盖它。
我真的很难弄清楚声音和通知系统上的权限是如何工作的,它们在哪里重叠等。我希望用户能够有权覆盖他们的免打扰首选项。
说清楚点。是否可以进行呼叫以覆盖在设备级别为用户设置的声音或通知设置,如果有,我需要什么权限?
如果这太笼统了,我很抱歉,如果它被摘牌了,我可以理解。
发布于 2019-06-20 14:15:20
尝试:
private void playSound(Context context, int soundResId, int volFactor) {
if (context != null) {
try {
MediaPlayer mediaPlayer = new MediaPlayer();
AssetFileDescriptor assetFileDescriptor = context.getResources().openRawResourceFd(soundResId);
if (assetFileDescriptor != null) {
mediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(), assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());
assetFileDescriptor.close();
}
if (mediaPlayer != null) {
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
try {
mediaPlayer.reset();
mediaPlayer.release();
} catch (Exception e) {
e.printStackTrace();
} finally {
mp = null;
}
}
});
mediaPlayer.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
try {
mediaPlayer.reset();
mediaPlayer.release();
} catch (Exception e) {
e.printStackTrace();
} finally {
mp = null;
}
return true;
}
});
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
am.setStreamVolume(AudioManager.STREAM_ALARM, am.getStreamMaxVolume(AudioManager.STREAM_MUSIC)/volFactor, 0);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
mediaPlayer.prepare();
mediaPlayer.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}同样在清单中:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />https://stackoverflow.com/questions/56677545
复制相似问题