即使手机处于静音状态,我也希望在通知中发出声音。 (是的,我知道,那不是这个概念,但是如果有人闯入我的房子,我想从警报系统中收到通知)
我在具有HTC one A9s的Android 6.0上使用Android API 23。 根据我的阅读,我唯一的选择是:
如果iam在调试模式下执行断点并跳过代码的每一行,则此方法很好。 但是,如果我在没有断点的调试模式(一切相同)中运行,它将无法正常工作。因此,我认为这是一个时序问题,音频管理器或硬件确实足够快地从静音变为静音。我不是专家,但这就是我的结论。有什么建议如何处理吗?我可以睡觉或做点什么,但这似乎很可靠而且正确。
我当前的代码:
// save current audio settings to restore later
int audio_ringermode = audio_mode.getRingerMode();
audio_old_volume =
audio_mode.getStreamVolume(AudioManager.STREAM_NOTIFICATION);
// set new audio settings
audio_mode.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
audio_mode.setStreamVolume(AudioManager.STREAM_NOTIFICATION,audio_mode.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION),0);
// Notification
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, ADMIN_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_home_notify)
.setColor(notification_icon)
.setContentTitle(notification_title)
.setContentText(notification_text)
.setAutoCancel(true)
.setSound(defaultSoundUri);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(notificationId,notificationBuilder.build());
// restore old audio settings
audio_mode.setRingerMode(audio_ringermode);
audio_mode.setStreamVolume(AudioManager.STREAM_NOTIFICATION, audio_old_volume ,0);
答案 0 :(得分:0)
即使手机静音,这也对我有用:
private void playSound() {
MediaPlayer mediaPlayer = MediaPlayer.create(mContext, R.raw.ring_message);
AudioManager am =
(AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
mediaPlayer.start();
}