簡體   English   中英

Android通知聲音間歇性地無法播放

[英]Android notification sound not playing, intermittently

我已經進行了搜索,因此很抱歉,如果這個問題已經得到答復(我很高興被重定向),但是特別是我們的問題是斷斷續續的。

我們的客戶抱怨說,當事件從我們的軟件發送到他們的手機時,通知音頻間歇性地不是“發出聲音”。 它會工作一段時間,然后“停下來幾個小時”(從客戶的抱怨中推算出來)。

我們無法在內部復制此文件,但是我們從客戶那里得到的挫敗感使我們確實需要對其進行修復。

我們的客戶堅稱他們不會打電話,播放音頻或運行其他軟件,並且從看到他們的電話來看,我基本上相信他們。

我們已經在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:在我的特定情況下,我運行以下檢查以查看是否需要增加音量:

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

@Ricardo給出的答案當然值得在您的代碼中包括,而我將其留在我們的代碼中,但我的問題主要是由於手機的電源管理(這可能很明顯,但我是Android開發的新手)。

我們的通知必須在發送時發送,並且我們的用戶的手機正進入睡眠模式,因此我們添加了WakeLock (盡管要注意他們的電池壽命,只有在用戶“登錄”到我們的應用程序。在轉換結束后,WakeLock被釋放了)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM