【发布时间】:2021-02-11 15:25:39
【问题描述】:
我需要知道在 back 和最近的函数中究竟在哪里实现了声音。当我触摸/单击时,主页和最近图标有声音。我不想在用户应用程序中做。我有Android 10的aosp源代码。所以我需要知道在哪个文件夹/方法中,这个声音已经实现了back和recent?
【问题讨论】:
标签: android android-layout android-source android-homebutton android-sound
我需要知道在 back 和最近的函数中究竟在哪里实现了声音。当我触摸/单击时,主页和最近图标有声音。我不想在用户应用程序中做。我有Android 10的aosp源代码。所以我需要知道在哪个文件夹/方法中,这个声音已经实现了back和recent?
【问题讨论】:
标签: android android-layout android-source android-homebutton android-sound
检查 AudioManager.playSoundEffect() 方法:https://cs.android.com/android/platform/superproject/+/master:frameworks/base/media/java/android/media/AudioManager.java;l=2596;drc=master;bpv=1;bpt=1
该方法的 Javadoc 说:
/**
* Plays a sound effect (Key clicks, lid open/close...)
* @param effectType The type of sound effect. One of
* {@link #FX_KEY_CLICK},
* {@link #FX_FOCUS_NAVIGATION_UP},
* {@link #FX_FOCUS_NAVIGATION_DOWN},
* {@link #FX_FOCUS_NAVIGATION_LEFT},
* {@link #FX_FOCUS_NAVIGATION_RIGHT},
* {@link #FX_KEYPRESS_STANDARD},
* {@link #FX_KEYPRESS_SPACEBAR},
* {@link #FX_KEYPRESS_DELETE},
* {@link #FX_KEYPRESS_RETURN},
* {@link #FX_KEYPRESS_INVALID},
* NOTE: This version uses the UI settings to determine
* whether sounds are heard or not.
*/
使用它,您可以决定跳过播放以获得所需的音效。
如果您想禁用所有音效,可以使用 Settings 条目:
见frameworks/base/core/java/android/provider/Settings.java:
/**
* Whether the sounds effects (key clicks, lid open ...) are enabled. The value is
* boolean (1 or 0).
*/
public static final String SOUND_EFFECTS_ENABLED = "sound_effects_enabled";
您可以通过以下方式修改:
Settings.System.putInt(mContext.getContentResolver(), SOUND_EFFECTS_ENABLED, 0);
【讨论】: