Android通知声音不能间歇性地播放

时间:2014-10-06 21:47:44

标签: android android-notifications

我已经搜索了这个,所以如果已经回答这个问题我很抱歉(我很乐意被重定向),但具体来说我们的问题是断断续续的。

我们的客户抱怨说,当从我们的软件向他们的手机发送事件时,通知音频是间歇性的,不会“鸣叫”。它会在一段时间内正常工作,然后“停止几个小时”(根据客户的抱怨推断)。

我们无法在内部重现这一点,但我们从客户那里得到的挫败感是我们真的需要解决它。

我们的客户坚持认为他们没有打电话,播放音频或运行其他软件,也没有看到他们的手机,我基本上相信他们。

我们已经注意到这主要是在Jellybean上,因为这是我们大多数客户正在运行的,但它可能不会被孤立到这种情况。

我做错了什么,或者是否有更好的方式来“通知”通知。在这个阶段,我很乐意尝试不同的东西

void updateNotification()
{
    Notification.Builder builder = new Notification.Builder(_context);

    // Set the appearance of the notification:
    int icon;
    String title;
    String description;

    // ...
    //CODE setting icon, title and description
    // ...

    builder.setSmallIcon(icon);
    builder.setContentTitle(title);
    builder.setContentText(description);
    builder.setTicker(description);

    // Set the sound for the notification:
    builder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM));

    Intent intent = new Intent(_context, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    intent.putExtra(MainActivity.EXTRA_TAB, MainActivity.EXTRA_TAB_TASKS);

    builder.setContentIntent(PendingIntent.getActivity(_context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));

    // Update the notification:
    NotificationManager manager = (NotificationManager)_context.getSystemService(Context.NOTIFICATION_SERVICE);
    manager.notify(_notificationId, builder.build());
}

2 个答案:

答案 0 :(得分:1)

出于某种原因,我注意到有些设备在静音或振动模式下静音所有音量(包括闹钟音量)。在这些模式下,对于这些设备,除非您更改模式,否则无法更改此音量。

我让用户抱怨类似的问题,并且必须通过强制更改模式来确保音量足够高。然后我播放音频并将模式切换回原始配置。

编辑:Here is a post来自抱怨此事的用户。请注意屏幕截图上的"警告"的音量按钮。禁用静音。

编辑2:在我的特定情况下,我运行以下检查以查看是否需要增加音量:

if (audioManager.getRingerMode() != AudioManager.RINGER_MODE_NORMAL
            && audioManager.getStreamVolume(AudioManager.STREAM_ALARM) == 0) {
    // Save current state and increase the volume
}

答案 1 :(得分:0)

虽然@Ricardo给出的答案肯定值得包含在你的代码中,而我已将其保留在我们的代码中,但我的问题主要是由于手机的电源管理(这可能是显而易见的,但我和# 39;对Android开发很新。)

我们的通知需要在发送时发送,我们的用户手机才会进入睡眠模式,因此我们添加了WakeLock(但是,为了照顾他们的电池寿命,我们只提供它& #39;当用户“登录”我们的应用时。在轮班结束时,WakeLock被释放了。