首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何禁用/重新启用在接收通知时发生的振动?

如何禁用/重新启用在接收通知时发生的振动?
EN

Stack Overflow用户
提问于 2017-02-12 09:23:56
回答 5查看 5.7K关注 0票数 11

当收到通知时,我定义了特定功能的自定义振动。

但是,当手机屏幕关闭时,自定义振动将与默认通知振动一起播放。

我试着将手机放到静音模式,并通过编程方式将其从静音模式中移除,并尝试使用部分唤醒锁,怀疑CPU关闭时,也会引发默认振动,但这两种方法似乎都不起作用。

我还试图静音默认音频和振动,并在完成接收通知的任务()后恢复它,但这只有助于掩盖默认的通知声音,而不是默认的振动。

代码语言:javascript
复制
//Trying to mute the notification sound and vibration
audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
 //Restoring the defaults
audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, defaultNotifVolume, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

请让我知道如何禁用/启用默认通知振动编程。

EN

回答 5

Stack Overflow用户

发布于 2017-02-22 14:20:51

试着这样做

代码语言:javascript
复制
NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this);

这将导致振动模式使用通知生成器并删除设置的振动,这将禁用振动。

这是我处理声音和振动的例子:

代码语言:javascript
复制
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());
票数 8
EN

Stack Overflow用户

发布于 2017-02-20 15:44:02

这是不可能的(可能是根?)。

应用程序不能干扰其他应用程序,所以即使有可能,也会违反谷歌的游戏规则。

票数 1
EN

Stack Overflow用户

发布于 2017-02-22 04:57:50

我假设的是,你想要切换振铃模式,以振动或振铃或静音。

对于您的通知,在通知之前将RINGER_MODE 设置为 SILENT ,并在通知后将其设置为 NORMAL

在Android中,您需要更改设备设置以切换任何设置参数的权限。从添加,

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

到舱单上。

现在,使用AudioManager来获得你想要达到的目标,

代码语言:javascript
复制
AudioManager aManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
aManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

你可以,RINGER_MODE_VIBRATERINGER_MODE_SILENTRINGER_MODE_NORMAL

还可以在清单中添加权限android.permission.VIBRATE

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42185959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档