我的应用程序具有某种功能,我需要将设备设置为无振动的静音模式。这是由通知到达触发的。
我使用以下代码执行此操作:
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
当设备屏幕打开时,这种方法有效,但当设备屏幕关闭(空闲时)一段时间后,它不能工作多次。
即使手机屏幕关闭,有没有办法让每次都能正常工作?
试试这个
NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this);
这将导致振动模式使用通知生成器并移除设置振动,这将禁用振动。
处理声音和振动的示例:
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentText(body)
.setContentTitle(title)
.setSound(soundUri)
.setLargeIcon(icon)
.setSound(soundUri)
.setLights(Color.parseColor("#ffb400"), 50, 10)
.setVibrate(new long[]{500, 500, 500, 500})
.setAutoCancel(true)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
它可以很容易地完成。首先,你需要获得android音频管理器的参考
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
然后使用AudioManager的引用调用AudioManager的方法。
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
此代码将手机的振铃模式设置为静音而不振动。