Android 5の修正方法1システムボリュームサイズ
本文はAndroid 5に基づく.1のコード
カスタマイズの必要性をするときは、システム通知の音を修正し、無効にし、サードパーティアプリケーションが通知を送信するのを避けるときは、音が大きく、ユーザーを驚かせます.いっそ通知音を消す.次に、音声を閉じるいくつかの方法と、システムのデフォルトの音声を変更する方法について説明します.
1.システムレイヤの既定のサウンドサイズを直接変更する
システムコード
配列
5, //STREAM_VOICE_CALL
7, //STREAM_SYSTEMX_STREAM_VOLUMEMAX_STREAM_VOLUMEMAX_STREAM_VOLUME
7, //STREAM_RING
15,//STREAM_MUSIC
7, //STREAM_ALARM
7, //STREAM_NOTIFICATION
15,//STREAM_BLUETOOTH_SCO
7, //STREAM_SYSTEM_ENFORCED
15,//STREAM_DTMF
15 //STREAM_TTS
};
private static int[] DEFAULT_STREAM_VOLUME = new int[] {
4, //STREAM_VOICE_CALL
7, //STREAM_SYSTEM
5, //STREAM_RING
11,//STREAM_MUSIC
6, //STREAM_ALARM
5, //STREAM_NOTIFICATION
7, //STREAM_BLUETOOTH_SCO
7, //STREAM_SYSTEM_ENFORCED
11,//STREAM_DTMF
11 //STREAM_TTS
};
デフォルトの通知音を変更する必要がある場合は、
2.データベース内の通知音の値の変更
メディア音声これらのデータはデータベースにデフォルトで格納されており、ほとんどのデータはシステムが初めて起動したときに
具体的なコード
loadSetting(stmt, Settings.System.VOLUME_MUSIC, AudioService.getDefaultStreamVolume(AudioManager.STREAM_MUSIC));
loadSetting(stmt, Settings.System.VOLUME_RING, AudioService.getDefaultStreamVolume(AudioManager.STREAM_RING));
loadSetting(stmt, Settings.System.VOLUME_SYSTEM, AudioService.getDefaultStreamVolume(AudioManager.STREAM_SYSTEM));
loadSetting(stmt,Settings.System.VOLUME_VOICE,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_VOICE_CALL));
loadSetting(stmt, Settings.System.VOLUME_ALARM, AudioService.getDefaultStreamVolume(AudioManager.STREAM_ALARM));
loadSetting(stmt,Settings.System.VOLUME_NOTIFICATION,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_NOTIFICATION));
loadSetting(stmt,Settings.System.VOLUME_BLUETOOTH_SCO,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO));
loadSettingsでは、すべての音に関するデフォルト値のサイズがデータベースに書き込まれていることがわかりました.ここから始めることができます.
return DEFAULT_STREAM_VOLUME[streamType];
}
実際には,シナリオ1でシステム内のデフォルトボリュームサイズ配列の値を返した.シナリオ1とシナリオ2は実際には効果的です
3.ro.を修正するconfig.notification_soundの属性値
この属性値は、デフォルトの音楽ファイルファイル名を通知することを意味し、システムコード
4.デフォルトのサウンドの変更
システムは多くの音をデフォルトしています.では、いくつかのシステムのデフォルトの音響ファイルを変更します.では、
カスタマイズの必要性をするときは、システム通知の音を修正し、無効にし、サードパーティアプリケーションが通知を送信するのを避けるときは、音が大きく、ユーザーを驚かせます.いっそ通知音を消す.次に、音声を閉じるいくつかの方法と、システムのデフォルトの音声を変更する方法について説明します.
1.システムレイヤの既定のサウンドサイズを直接変更する
システムコード
frameworks/base/media/java/android/media/AudioService.java
の先頭には2つの配列が定義されており、1つのMAX_STREAM_VOLUME
には各種音声の最大値(最大値は100ではないので、各音量の最大値を取得するにはAudioManager.getStreamMaxVolume(type)
が必要)が定義され、設定されている.配列
DEFAULT_STREAM_VOLUME
も定義されており、MAX_STREAM_VOLUME
で定義されている順序と同様に、様々な音のデフォルトの大きさが示されています.このブロックコードは次のとおりです./** @hide Maximum volume index values for audio streams */
private static int[] MAX_STREAM_VOLUME = new int[] {
5, // STREAM_VOICE_CALL
7, // STREAM_SYSTEMX_STREAM_VOLUMEMAX_STREAM_VOLUMEMAX_STREAM_VOLUME
7, // STREAM_RING
15, // STREAM_MUSIC
7, // STREAM_ALARM
7, // STREAM_NOTIFICATION
15, // STREAM_BLUETOOTH_SCO
7, // STREAM_SYSTEM_ENFORCED
15, // STREAM_DTMF
15 // STREAM_TTS
};
private static int[] DEFAULT_STREAM_VOLUME = new int[] {
4, // STREAM_VOICE_CALL
7, // STREAM_SYSTEM
5, // STREAM_RING
11, // STREAM_MUSIC
6, // STREAM_ALARM
5, // STREAM_NOTIFICATION
7, // STREAM_BLUETOOTH_SCO
7, // STREAM_SYSTEM_ENFORCED
11, // STREAM_DTMF
11 // STREAM_TTS
};
private static int[] MAX_STREAM_VOLUME = new int[] {5, //STREAM_VOICE_CALL
7, //STREAM_SYSTEMX_STREAM_VOLUMEMAX_STREAM_VOLUMEMAX_STREAM_VOLUME
7, //STREAM_RING
15,//STREAM_MUSIC
7, //STREAM_ALARM
7, //STREAM_NOTIFICATION
15,//STREAM_BLUETOOTH_SCO
7, //STREAM_SYSTEM_ENFORCED
15,//STREAM_DTMF
15 //STREAM_TTS
};
private static int[] DEFAULT_STREAM_VOLUME = new int[] {
4, //STREAM_VOICE_CALL
7, //STREAM_SYSTEM
5, //STREAM_RING
11,//STREAM_MUSIC
6, //STREAM_ALARM
5, //STREAM_NOTIFICATION
7, //STREAM_BLUETOOTH_SCO
7, //STREAM_SYSTEM_ENFORCED
11,//STREAM_DTMF
11 //STREAM_TTS
};
デフォルトの通知音を変更する必要がある場合は、
STREAM_NOTIFICATION
の前の数値5を0にすると、デフォルトの音は0になります.2.データベース内の通知音の値の変更
メディア音声これらのデータはデータベースにデフォルトで格納されており、ほとんどのデータはシステムが初めて起動したときに
SettingProvider
アプリケーションに初期化された値をロードしていることを知っています.もちろん、通知された音声も含まれています.具体的なコード
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
のうち、loadVolumeLevels(db)
の方法があります.この方法は、デフォルトの音声サイズをすべてロードする場所です.具体的なコードは以下の通りです.stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + " VALUES(?,?);");
loadSetting(stmt, Settings.System.VOLUME_MUSIC, AudioService.getDefaultStreamVolume(AudioManager.STREAM_MUSIC));
loadSetting(stmt, Settings.System.VOLUME_RING, AudioService.getDefaultStreamVolume(AudioManager.STREAM_RING));
loadSetting(stmt, Settings.System.VOLUME_SYSTEM, AudioService.getDefaultStreamVolume(AudioManager.STREAM_SYSTEM));
loadSetting(stmt,Settings.System.VOLUME_VOICE,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_VOICE_CALL));
loadSetting(stmt, Settings.System.VOLUME_ALARM, AudioService.getDefaultStreamVolume(AudioManager.STREAM_ALARM));
loadSetting(stmt,Settings.System.VOLUME_NOTIFICATION,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_NOTIFICATION));
loadSetting(stmt,Settings.System.VOLUME_BLUETOOTH_SCO,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO));
INSERT OR IGNORE INTO system(name,value)"+ "VALUES(?,?);");loadSetting(stmt, Settings.System.VOLUME_MUSIC, AudioService.getDefaultStreamVolume(AudioManager.STREAM_MUSIC));
loadSetting(stmt, Settings.System.VOLUME_RING, AudioService.getDefaultStreamVolume(AudioManager.STREAM_RING));
loadSetting(stmt, Settings.System.VOLUME_SYSTEM, AudioService.getDefaultStreamVolume(AudioManager.STREAM_SYSTEM));
loadSetting(stmt,Settings.System.VOLUME_VOICE,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_VOICE_CALL));
loadSetting(stmt, Settings.System.VOLUME_ALARM, AudioService.getDefaultStreamVolume(AudioManager.STREAM_ALARM));
loadSetting(stmt,Settings.System.VOLUME_NOTIFICATION,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_NOTIFICATION));
loadSetting(stmt,Settings.System.VOLUME_BLUETOOTH_SCO,
AudioService.getDefaultStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO));
loadSettingsでは、すべての音に関するデフォルト値のサイズがデータベースに書き込まれていることがわかりました.ここから始めることができます.
Settings.System.VOLUME_NOTIFICATION
の設定項目では、彼を0に設定すると、システムがデフォルトの音を0に通知します.AudioService.getDefaultStreamVolume
という方法の実現を見てみましょう.public static int getDefaultStreamVolume(int streamType) {
return DEFAULT_STREAM_VOLUME[streamType];
}
static int getDefaultStreamVolume(int streamType) {return DEFAULT_STREAM_VOLUME[streamType];
}
実際には,シナリオ1でシステム内のデフォルトボリュームサイズ配列の値を返した.シナリオ1とシナリオ2は実際には効果的です
3.ro.を修正するconfig.notification_soundの属性値
この属性値は、デフォルトの音楽ファイルファイル名を通知することを意味し、システムコード
build/target/product/full_base.mk
で定義されています.音声が出たくない場合は、デフォルト値を存在しないファイルに変更することができます.通知音声は再生されません.もちろん、お客様定義のmkでPRODUCT_PROPERTY_OVERRIDES
を使用してこの属性を複写することもできます.ファイルが存在しないか空に指定すると、通知音が鳴りません.4.デフォルトのサウンドの変更
システムは多くの音をデフォルトしています.では、いくつかのシステムのデフォルトの音響ファイルを変更します.では、
frameworks/base/data/sounds
の下のファイルとフォルダの音声ファイルを変更することができます.名前を変更したら、mkで元の名前を新しい名前に置き換えることを覚えています.この下のmkの役割は、これらの音楽ファイルをすべてシステムsystem/media/audio
の下の各モジュールのファイルにパッケージ化し、システムが起動したときに、これらのファイルをスキャンしてデータベースに追加し、その後、設定中に音声を交換すると、直接データベースからこれらの音楽ファイルを検索し、ユーザーが選択することである.