0

サイレントモードでもサウンド通知を再生するアプリを書いています。Silent を一時的にオフにして、後でロールバックしたくありません。そのためにALARMストリームを使用しています。デフォルトでは ALARM ストリームは無音でミュートされていないため、通常は適切に機能します。しかし、そうである場合もあります。

ストリームが現在ミュートされている (サイレント モード) かどうかを確認するにはどうすればよいですか? (通常モードに切り替えずに) ミュートを解除するにはどうすればよいですか?

4

1 に答える 1

1

私自身の質問に答える:

解決策は、Android OS ソース (標準のアラーム アプリ) で見つかりました。

オプション「Alarm in Silent」を確認して設定する方法を見つけました。

private static final int ALARM_STREAM_TYPE_BIT =
        1 << AudioManager.STREAM_ALARM;

public static void setAlarmInSilent(boolean on) {
    int ringerModeStreamTypes = Settings.System.getInt(
            context.getContentResolver(),
            Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0);

    if (on) {
        ringerModeStreamTypes &= ~ALARM_STREAM_TYPE_BIT;
    } else {
        ringerModeStreamTypes |= ALARM_STREAM_TYPE_BIT;
    }

    Settings.System.putInt(context.getContentResolver(),
            Settings.System.MODE_RINGER_STREAMS_AFFECTED,
            ringerModeStreamTypes );
}

Android src へのリンク: https://android.googlesource.com/platform/packages/apps/AlarmClock/+/donut-release2/src/com/android/alarmclock/SettingsActivity.java

于 2013-10-12T09:12:47.067 に答える