为什么通知SOUNDS会使手机振动?

时间:2016-08-04 22:27:19

标签: android android-notifications android-notification-bar

如果我创建没有声音的常规通知,它可以正常工作。但是,如果我添加声音,它会振动。这是不合逻辑的,所以我不理解。

这是一个正常工作的代码示例(不会振动)

        Notification.Builder builder = new Notification.Builder(this);
    builder.setSmallIcon(R.drawable.ic_launcher)
            .setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0))
            .setOngoing(false);

    builder.setCategory(Notification.CATEGORY_SERVICE);
    builder.setVisibility(Notification.VISIBILITY_SECRET);
    builder.setPriority(Notification.PRIORITY_MAX);
    builder.setLights(0xFF00FF00, 1000, 0);
    Uri theUri = Uri.parse(uriString);
    //builder.setSound(theUri);
    builder.setContentText("Android sucks");
    builder.setAutoCancel(false);
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    manager.notify(FOREGROUND_ID, builder.build());

以下是导致手机振动的代码。请注意,我的通知中未设置振动:

        Notification.Builder builder = new Notification.Builder(this);
    builder.setSmallIcon(R.drawable.ic_launcher)
            .setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0))
            .setOngoing(false);

    builder.setCategory(Notification.CATEGORY_SERVICE);
    builder.setVisibility(Notification.VISIBILITY_SECRET);
    builder.setPriority(Notification.PRIORITY_MAX);
    builder.setLights(0xFF00FF00, 1000, 0);
    Uri theUri = Uri.parse(uriString);
    builder.setSound(theUri);
    builder.setContentText("Go buy an iPhone");
    builder.setAutoCancel(false);
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    manager.notify(FOREGROUND_ID, builder.build());

叫我不理智,但当我想要声音时,我会设置声音,当我想要振动时,我会设置振动。如果我想要两者,我会设置两者。那么为什么当我设置声音时,我会自动振动?

1 个答案:

答案 0 :(得分:0)

这似乎可以解决问题:

            long[] nullify = {0,0,0};
            builder.setVibrate(nullify);

虽然它导致了一些令人沮丧的异常现象。有七个音频流。他们是:

    STREAM_RING;
    STREAM_NOTIFICATION;
    STREAM_ALARM;
    STREAM_MUSIC;
    STREAM_DTMF;
    STREAM_SYSTEM;
    STREAM_VOICE_CALL;

现在,如果我必须选择我认为通知声音会使用哪个流,您认为我猜哪个流?你是对的,我希望它能使用STREAM_NOTIFICATION。它使用什么流? STREAM_SYSTEM。因此,如果我希望能够控制通知量,我必须为STREAM_SYSTEM设置音量。但那当然会有不必要的副作用,就像现在我改变了那个设置,当我点击"喜欢"时,你可以听到声音。例如,在Facebook应用程序中的某些内容。

Android疯狂搞砸了。