【问题标题】:android "Use ringtone volume for notifications"android“使用铃声音量通知”
【发布时间】:2014-01-20 13:38:59
【问题描述】:

我正在尝试更改具有 android 4.3 的 HTC One 上通知流的音量(不是响铃)。我正在使用此代码:

int setting = Settings.System.getInt(getContentResolver(), "notifications_use_ring_volume", -20);
boolean b = Settings.System.putInt(getContentResolver(), "notifications_use_ring_volume", 1 - setting);

所以每次 b 为真(意味着已经进行了更改)并且每次我输入 0 或 1。现在,在我更改值之后,当我读取它时,它会显示我的值在 avove 代码中更新,但是当我去设置->声音->音量时,

“使用铃声音量通知”

复选框保持不变(当该设置为 0 或 1 时)。我在这里错过了什么吗?如何通过代码更新此设置,以便我可以在手机设置中看到此更改?

【问题讨论】:

    标签: android notifications volumes


    【解决方案1】:

    试试这个。

    AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE);
    am.setStreamVolume(AudioManager.STREAM_NOTIFICATION, am.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION), AudioManager.FLAG_PLAY_SOUND);
    

    你可以控制音量,改变第二个参数。 (am.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION))

    setStreamVolume(int, int, int)

    【讨论】:

    • 如果 android os 是 4.0 或更高版本,则铃声和通知流是相关的,并且更改这两者中的一个,更改和另一个,我不想更改两者,正如我所说以上
    【解决方案2】:

    在您的应用程序资源文件夹中创建一个“原始”文件夹并放置铃声(.mp3)文件 在该原始文件夹中,然后在收到通知时添加此行。

    notification.sound = Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.sapphire);

    int icon = R.drawable.ic_launcher;
    long when = System.currentTimeMillis();
    NotificationManager notificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(icon, message, when);
    notification.sound = Uri.parse("android.resource://"
                + context.getPackageName() + "/" + R.raw.sapphire);
    

    然后创建你的意图和待处理的意图并调用它

    notification.setLatestEventInfo(上下文、消息、标题、 未决意图);
    notificationManager.notify(0, 通知);

    【讨论】:

    • 它不起作用,但为什么需要为这个任务创建通知?
    【解决方案3】:

    您需要使用AudioManager。它有一个名为setStreamVolume() 的方法,可以帮助您控制音频流的音量。

    这是一个示例应用程序,它演示了您想要什么。 Link to sample applcation.

    【讨论】:

    • 是的,但首先,如果该设置存在,我必须“分离”这两个流。如果它存在,我必须将“notifications_use_ring_volume”设置设置为 0,因为否则 ting 流和通知流是相关的,并且更改环流也会更改通知流。所以我的问题是更改此设置,以便我可以在设置屏幕中看到更改。
    • @BudaGavril Android ICS 及更高版本已将铃声和通知卷合并为一个卷。无法通过代码取消链接这些音量控件。但是,您可以根据情况调整新的统一通知音量。例如,当有人来电时,您可以使用音频控制,它会应用预先选择的音量设置来模仿铃声音量,并在通话结束后调整回之前的设置。
    • 我知道,但如果存在该设置(使用通知铃声音量),如果您取消选中该设置,则可以有单独的流。我想从代码中取消选中它,但我不能这样做。那是我的问题
    猜你喜欢
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多