EU で販売されるデバイスに必要な大音量またはセーフ オーディオの警告を無効にする方法に関するチュートリアル。 これは、root を持たないすべてのデバイスで機能します。
欧州連合の加盟国に住んでいる人は、上の主要画像に示されているように、ヘッドフォンの音量を上げようとしたときに警告に遭遇したことがあるでしょう。
欧州電気技術標準化委員会 (CENELEC) が定めた規制に従って、すべての電子機器は 2013 年 2 月以降に販売されたメディア再生可能なデバイスのデフォルトの出力音量レベルは最大 85 でなければなりません dB。 ユーザーは警告を無効にして音量を最大 100 dB まで上げることを選択できますが、その場合、音楽を 20 時間再生した後に警告が再度表示される必要があります。
この規制が善良な社会を促進する上で有効であるかどうかについて議論するつもりはありませんが、 健康上、この警告を回避することを頻繁に選択するユーザーは、このプロセスを実行できるかどうか疑問に思うことがよくあります。 自動化された。 起動時など、音量制限をオーバーライドすることに手動で同意しなければならないのが面倒な場合が多くあります。 Bluetooth デバイスでリモートから音楽を再生できるため、これを自動的にバイパスする方法を考え出したかったのです。 警告。
「安全な音量制限」を回避するソリューションはフォーラムを検索するとすでに存在しますが、これまでのところすべてのソリューションでは次のことが必要です。 インストール Xposed モジュール. Xused Framework では、Nougat 以前のバージョンの Android を使用しているだけでなく、ルート アクセス (ほとんどの携帯電話ではロックされていないブートローダーを意味します) が必要なため、これを使用できるユーザーが必然的に制限されます。 しかし、AOSP とさまざまなシステム設定を詳しく調べた結果、大音量/安全なオーディオ制限を回避する方法を発見しました。 root を必要とせずにすべてのデバイスで。
このガイドに従うことにより、大音量レベルでメディアを聴くことに伴うリスクを受け入れることになります。
安全な音声警告バイパスのチュートリアル
私の前回の記事を読んでくださった方なら、 root アクセスなしでイマーシブ モードを有効にする
具体的にはシステムの改修を行います。 グローバルプロパティ audio_safe_volume_state 起動時と定期的な両方で、Android は常に警告を回避することに同意したものとみなします。 この物件は AOSPで定義されている、以下に再掲します。 このプロパティには、0 ~ 3 の範囲のいくつかの状態があります。 起動後 30 秒後、または 20 時間の連続音楽再生ごとに、状態は「0」または「未構成」に設定されます。 その後、設定に応じて、「無効」の場合は「1」、「有効」の場合は「3」に設定されます。 モバイル国コード. EU にお住まいの場合、このプロパティはデフォルトで「3」に設定されていますが、ユーザーが音量警告を手動でバイパスするたびに、「非アクティブ」を表す「2」に変更されます。 このプロパティの値を「非アクティブ」状態に変更します。 (気になる方のために言っておきますが、「無効」に変更しても私にとってはうまくいきませんでした)。
//
// Safe media volume management.
// MUSIC stream volume level is limited when headphones are connected according to safety
// regulation. When the user attempts to raise the volume above the limit, a warning is
// displayed and the user has to acknowlegde before the volume is actually changed.
// The volume index corresponding to the limit is stored in config_safe_media_volume_index
// property. Platforms with a different limit must set this property accordingly in their
// overlay.
//
// mSafeMediaVolumeState indicates whether the media volume is limited over headphones.
// It is SAFE_MEDIA_VOLUME_NOT_CONFIGURED at boot time until a network service is connected
// or the configure time is elapsed. It is then set to SAFE_MEDIA_VOLUME_ACTIVE or
// SAFE_MEDIA_VOLUME_DISABLED according to country option. If not SAFE_MEDIA_VOLUME_DISABLED, it
// can be setto SAFE_MEDIA_VOLUME_INACTIVE bycalling AudioService.disableSafeMediaVolume()
// (when user opts out).
privatefinalint SAFE_MEDIA_VOLUME_NOT_CONFIGURED = 0;
privatefinalint SAFE_MEDIA_VOLUME_DISABLED = 1;
privatefinalint SAFE_MEDIA_VOLUME_INACTIVE = 2;
privatefinalint SAFE_MEDIA_VOLUME_ACTIVE = 3;
private Integer mSafeMediaVolumeState;
privateint mMcc = 0;
// mSafeMediaVolumeIndex is the cached value of config_safe_media_volume_index property
privateint mSafeMediaVolumeIndex;
// mSafeMediaVolumeDevices lists the devices for which safe media volume is enforced,
privatefinalint mSafeMediaVolumeDevices = AudioSystem.DEVICE_OUT_WIRED_HEADSET |
AudioSystem.DEVICE_OUT_WIRED_HEADPHONE;
// mMusicActiveMs is the cumulative time of music activity since safe volume was disabled.
// When this time reaches UNSAFE_VOLUME_MUSIC_ACTIVE_MS_MAX, the safe media volume is re-enabled
// automatically. mMusicActiveMs is rounded to a multiple of MUSIC_ACTIVE_POLL_PERIOD_MS.
privateint mMusicActiveMs;
privatestaticfinalint UNSAFE_VOLUME_MUSIC_ACTIVE_MS_MAX = (20 * 3600 * 1000); // 20 hours
privatestaticfinalint MUSIC_ACTIVE_POLL_PERIOD_MS = 60000; // 1 minute polling interval
privatestaticfinalint SAFE_VOLUME_CONFIGURE_TIMEOUT_MS = 30000; // 30s after boot completed
続きを読む
まずインストールする必要があります タスカー そして オートツール したがって、このトリックを自動化できます。 技術的には、Tasker 以外の他の自動化アプリを使用できますが、私は Tasker しか知らないため、別のアプリを使用したい場合は自分で調整する必要があります。 ただし、このプラグインを使用するとデバイスの安全な設定を制御できるため、このトリックには AutoTools が不可欠です。
イマーシブ モードの切り替えに関する私の記事で説明したように、 WRITE_SECURE_SETTINGS AutoTools へのアクセス許可。 これは、安全なオーディオ音量状態を制御するためのコマンドが以下で定義されているためです。 設定。 グローバル ただし、コマンドの正確な構文は AOSP では隠されています (イマーシブ モードの場合と同様)。 イマーシブ モードに関する前回のチュートリアルを読んだ後、すでに WRITE_SECURE_SETTINGS 権限を AutoTools に付与している場合は、次のセクションをスキップできます。 そうでない場合は、セットアップする必要があります。
Android の権限管理システムでは、アプリケーションはマニフェスト ファイルで付与する権限を定義します。 その後、ユーザーはインストール時 (Marshmallow 以前) またはオンデマンド (Marshmallow+) で権限を付与または拒否できます。 ただし、アプリケーションがマニフェストで要求しても付与できない特定の権限があります。 WRITE_SECURE_SETTINGS. これは、これと同じくらい強力な権限をアプリケーションに付与すると、そのアプリケーションがデバイスを大幅に制御できるようになるためです。
ただし、必要なアプリに WRITE_SECURE_SETTINGS 権限を付与するために使用できる回避策が 1 つあります。 ADB を使用することで パッケージマネージャー (午後) ツールを使用すると、必要なアプリケーションに任意の権限を付与できます (アプリケーションがマニフェスト ファイルでその権限を要求している場合)。
最初に行う必要があるのは、 ADBバイナリをインストールする コンピュータにインストールし、続いて デバイスに適したドライバー. 次に、開発者向けオプションで USB デバッグを有効にし (まだ設定していない場合は、[設定] --> [端末情報] に移動し、[ビルド番号] を 7 回タップします)、携帯電話をコンピュータに接続します。 最後に、ターミナルを開いたら、次のコマンドを送信します。
adb shell pm grant com.joaomgcd.autotools android.permission.WRITE_SECURE_SETTINGS
AutoTools は、デバイス上のグローバル、セキュア、またはシステム設定を変更できるようになりました。 これらの設定を試すことができるさまざまな方法があり、利用可能な設定のリストは次のとおりです。 各カテゴリはデバイスとソフトウェアのビルドに完全に依存しますが、その議論はまた別の機会に行います。 時間。 いずれにせよ、オートツールを使用してボリュームの安全な状態を制御する方法を説明していきます。
起動時の安全なオーディオ警告を無効にする
Tasker に精通している人のために、プロフィールの説明をここに示します。 Tasker に慣れていない場合は、ステップバイステップの手順を読んでください。
起動時に安全なオーディオを無効にする
Profile: Disable Safe Audio On Boot (6)
Event: Monitor Start
Enter: Anon (7)
A1: Wait[ MS: 0 Seconds: 30 Minutes: 0 Hours: 0 Days: 0 ]
A2: AutoTools Secure Settings [ Configuration: Setting Type: Global
Name: audio_safe_volume_state
Input Type: Int
Value: 2 Timeout (Seconds):60 ]
続きを読む
新しいプロファイルを作成できるように、Tasker を開きます。 右下隅にある + アイコンをクリックして新しいプロファイルを作成します。 新規追加 イベント コンテキストに移動して Tasker --> モニター開始。 携帯電話の起動時にアクティブ化されるイベント コンテキストではなく、Tasker の起動時にトリガーされるこのイベント コンテキストを使用しています。これは、前者の方が後者よりもはるかに信頼性が高いためです。
いずれの場合も、このプロファイルに関連付けられたタスクを作成するので、戻るボタンを押してください。 タスクの名前は何でも構いませんので、任意の名前を付けます。 タスク作成画面に入ったら、 を押します。 + 画面中央下にある アイコンをクリックして、新しいアクションを作成します。 最初のアクションについては、次の場所に移動します。 タスク --> 待機 そして待ってもらいます 30秒。 これは、Android でボリュームの安全な状態を設定するために使用される「起動後 30 秒」ルールを考慮しています。
次に、新しいアクションを作成し、次の場所に移動します。 プラグイン --> オートツール --> 安全な設定。 鉛筆を押すと、AutoTools の設定画面が開きます。 に行く カスタム設定。 設定タイプに次のように入力します。 グローバル. 名前に次のように入力します audio_safe_volume_state。 入力タイプについては、次のようにします。 整数。 価値のためにそれをする 2. すべてが正しく設定されていることを確認してください。設定は以下の中央のスクリーンショットと一致するはずです。 コマンドを送信する必要があります その通り 私が書いたように、そうでなければ何の影響もありません。
完了したら、別のプロファイルを作成する必要があるため、Tasker のメイン メニューに戻ります。 先ほど作成したものは、起動後 30 秒後に安全なボリューム状態が設定される場合を考慮していますが、 デバイスをほとんど再起動しない人のために、これを定期的に設定するための別のプロファイルを作成します 価値。
安全なオーディオ警告を定期的に無効にする
Tasker に精通している人のために、プロフィールの説明をここに示します。 Tasker に慣れていない場合は、ステップバイステップの手順を読んでください。
セーフオーディオを定期的に無効にする
Profile: Disable Safe Audio Periodically (21)
Time: 11:59PM
Enter: Anon (122)
A1: AutoTools Secure Settings [ Configuration: Setting Type: Global
Name: audio_safe_volume_state
Input Type: Int
Value: 2 Timeout (Seconds):60 ]
続きを読む
新しいプロファイルを作成します。今回は 時間 コンテクスト。 残念ながら、メディア再生の現在の累積時間を取得する方法を私は知りません。 root なので、代わりに、24 時間に 1 回定期的に安全なボリュームの状態を非アクティブに設定します (... 実際に 24 時間以内に 20 時間の音楽を聴くわけではありませんよね?)。 とにかく、定期的なタスクを設定するための Tasker のインターフェイスはちょっとひどいですが、要点は、「From」と「To」の時間を同じ時間に設定したいということです。 こうすることで、Tasker は、設定した時間に 1 回だけタスクをトリガーするように処理します (私は午前 0 時 1 分前に設定しました)。
タスクに関しては、前のプロファイルのアクション #2 で行ったことをコピーするだけです。 この場合、24 時間ごとにこのグローバル システム プロパティの値を変更するだけなので、新しいアクションや異なるアクションはありません。
これらのプロファイルを両方設定したら完了です。 携帯電話を再起動します ヘッドフォンを接続したときに「安全な音量」の警告が表示されなくなります。
ダウンロードしてTaskerにインポートする
いつものように、ダウンロードしてインポートできるスクリプトの XML ファイルを提供しています。 以下のリンクからファイルをダウンロードし、内部ストレージの任意の場所に保存するだけです。 Tasker を開き、環境設定で初心者モードを無効にします。 次に、メイン画面に戻り、上部の「プロファイル」タブを長押しします。 ポップアップが表示され、オプションの 1 つとして「インポート」が表示されます。 それをタップし、.prf.xml ファイルを保存した場所を参照し、インポートするファイルを選択します。 2 番目のプロファイルについても同じ手順を繰り返します。
「起動時の安全なオーディオ警告を無効にする」プロファイルをダウンロードする
「安全なオーディオ警告を定期的に無効にする」プロファイルをダウンロードする
このヒントがお役に立てば幸いです。 これがうまくいくかどうか、以下のコメントでお知らせください。