Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

[Android][Lollipop]マナーモード設定を取得する

More than 5 years have passed since last update.

(注意)現在Android 6.0 Marshmallowでの動作は確認できていません。
手元のNexus 5(MRA58K)で確認したところSettingNotFoundException(API23より追加)が出るため、塞がれている可能性が高いです。

Lollipopで追加されたマナーモード設定を参照する

Lollipop以前ではマナーモードはVolumeオフでしかありませんでしたが、Lollipopになってマナーモードという、通知やAlarmをスリープさせるモードが追加されました。

そのモード中はアラームも鳴らないため(AlarmManagerがサスペンドされる?)、アラーム系のアプリや通知系のアプリでは設定を検知した時注意したいかもしれません。
そこで調べてみました。

取得方法

設定値は通常のSystem設定のProviderで公開されているため、特別な権限は必要ありません。

int mode = Settings.Global.getInt(getContext().getContentResolver(),
                        "zen_mode");

"zen_mode"というフィールド名はSettings.Globalの中に@hideで定義されています。
Android 5.1以降で追加されています。

Settings.java
        /**
         * Defines global zen mode.  ZEN_MODE_OFF, ZEN_MODE_IMPORTANT_INTERRUPTIONS,
         * or ZEN_MODE_NO_INTERRUPTIONS.
         *
         * @hide
         */
        public static final String ZEN_MODE = "zen_mode";

        /** @hide */ public static final int ZEN_MODE_OFF = 0;
        /** @hide */ public static final int ZEN_MODE_IMPORTANT_INTERRUPTIONS = 1;
        /** @hide */ public static final int ZEN_MODE_NO_INTERRUPTIONS = 2;

それぞれなんとなくわかりますが、通知領域に表示されている、すべて・重要・マナーモードに当てはまります。

他にもzenmodeの維持する時間を設定するzen_mode_config_etagもあります。

Settings.java
        /**
         * Opaque value, changes when persisted zen mode configuration changes.
         *
         * @hide
         */
        public static final String ZEN_MODE_CONFIG_ETAG = "zen_mode_config_etag";

変更方法

変更も同様の方法で可能ですが、実行には android.permission.WRITE_SECURE_SETTINGS が要求されます。
そのため、自分でAndroidをBuildしたり、rootを取得して権限を適切に取得しない限りは使えません。

boolean result = Settings.Global.putInt(getContext().getContentResolver(),
                        "zen_mode", (Integer) value);
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away