Android修改情景模式的默认值

UI介绍:
1, 情景模式下菜单下分预定义的几种情景模式(标准/静音/会议/户外)
2, 每个情景模式点进去,分几大类:常规/音量/来电/通知/系统设置

[SOLUTION]
一,针对每个情景模式的默认值修改:

1,默认铃声是统一在alps/build/target/product/core.mk文件中设置,其中ro.config.notification_sound表示通知的默认铃声,ro.config.ringtone表示语音来电和视频来电的铃声,若希望语音来电和视频来电分开设置,请参考FAQ08273 [Audio Profile]如何设置视频来电铃的默认铃声:
PRODUCT_PROPERTY_OVERRIDES:=
ro.config.notification_sound=Proxima.ogg
ro.config.alarm_alert=Alarm_Classic.ogg
ro.config.ringtone=Backroad.ogg

2,情景模式中的其他设定参考到
mediatek/frameworks/base/media/audio/java/com/mediatek/audioprofile/AudioProfileManager.java
中的getDefaultState()

public static AudioProfileState getDefaultState(String profileKey) {
if (null == sDEFAULTSTATES) {
IDefaultProfileStatesGetter defaultProfileStatesGetter =
MediatekClassFactory.createInstance(IDefaultProfileStatesGetter.class);
if (defaultProfileStatesGetter != null) {
sDEFAULTSTATES = defaultProfileStatesGetter.getDefaultProfileStates();
}
if (null == sDEFAULTSTATES) {
sDEFAULTSTATES = new HashMap<Integer, AudioProfileState>(PREDEFINED_PROFILES_COUNT);
/** Default values of ringer volume for different audio profiles. */
final int DEFAULT_RINGER_VOLUME_GENERAL = 8;
final int DEFAULT_RINGER_VOLUME_SILENT = 0;
final int DEFAULT_RINGER_VOLUME_MEETING = 0;
final int DEFAULT_RINGER_VOLUME_OUTDOOR = 15;

/** Default values of notification volume for different audio profiles. */
final int DEFAULT_NOTIFICATION_VOLUME_GENERAL = 8;
final int DEFAULT_NOTIFICATION_VOLUME_SILENT = 0;
final int DEFAULT_NOTIFICATION_VOLUME_MEETING = 0;
final int DEFAULT_NOTIFICATION_VOLUME_OUTDOOR = 15;

/** Default values of alarm volume for different audio profiles. */
final int DEFAULT_ALARM_VOLUME_GENERAL = 8;
final int DEFAULT_ALARM_VOLUME_SILENT = 0;
final int DEFAULT_ALARM_VOLUME_MEETING = 0;
final int DEFAULT_ALARM_VOLUME_OUTDOOR = 15;

/** Default values of vibration for different audio profiles. */
final boolean DEFAULT_VIBRATION_GENERAL = false;
final boolean DEFAULT_VIBRATION_SILENT = false;
final boolean DEFAULT_VIBRATION_MEETING = true;
final boolean DEFAULT_VIBRATION_OUTDOOR = true;

/**

  • Default values that indicate whether the audible DTMF tone should be
  • played by the dialer when dialing.
    */
    final boolean DEFAULT_DTMFTONE_GENERAL = false;
    final boolean DEFAULT_DTMFTONE_SILENT = false;
    final boolean DEFAULT_DTMFTONE_MEETING = false;
    final boolean DEFAULT_DTMFTONE_OUTDOOR = true;

/**

  • Default values of sound effect(Key clicks, lid open/close…) for
  • different audio profiles.
    */
    final boolean DEFAULT_SOUNDEFFECT_GENERAL = false;
    final boolean DEFAULT_SOUNDEFFECT_SILENT = false;
    final boolean DEFAULT_SOUNDEFFECT_MEETING = false;
    final boolean DEFAULT_SOUNDEFFECT_OUTDOOR = false;

/** Default values that indicate whether the lock screen sound are enabled. */
final boolean DEFAULT_LOCK_SCREEN_GENERAL = false;
final boolean DEFAULT_LOCK_SCREEN_SILENT = false;
final boolean DEFAULT_LOCK_SCREEN_MEETING = false;
final boolean DEFAULT_LOCK_SCREEN_OUTDOOR = true;

扫描二维码关注公众号,回复: 10048526 查看本文章

/** Default values that indicate whether the haptic feedback are enabled. */
final boolean DEFAULT_HAPTIC_FEEDBACK_GENERAL = false;
final boolean DEFAULT_HAPTIC_FEEDBACK_SILENT = false;
final boolean DEFAULT_HAPTIC_FEEDBACK_MEETING = false;
final boolean DEFAULT_HAPTIC_FEEDBACK_OUTDOOR = true;

… …

1)上图中红色框标所示表示是否有IDefaultProfileStatesGetter接口的实现,若没有,则默认设置在getDeafultSte中绿色框中配置,其中DEFAULT_RINGER_VOLUME_GENERAL=4,表General Profile的默认的铃声音量,以此类推,其他的默认值也是如此命名;

2)若能在MediatekClassFactory.java或者MediatekOPClassFactory.java中搜到IDefaultProfileStatesGetter的实现类,如TDD项目对应的IDefaultProfileStatesGetter的实现类是DefaultProfileStatesGetterOP01.java,则情景模式的默认值要修改alps/mediate/operator/op01/frameworks/java/com/mediate/op/audioprofileDefaultProfileStatesGetterOP01.java的getDefaultPofileStates():

3,在AudioManager.java

DEFAULT_STREAM_VOLUME [] 数组中请把对应的stream type 音量值修改一致。比如把来电铃声从默认4调到6
4, // STREAM_RING
改为
6, // STREAM_RING

二,download bin到手机之后如果从来都没有进入到情景模式菜单修改过任何一个情景模式,则情景模式就不会synchronize 自己的设定到系统设定,因此这种情况若希望系统的默认设定和情景模式默认Active的(默认Active的是General Profile)的设定一致的话,可以修改如下系统的默认值来与前面所说的的情景模式的具体值相匹配:

alps/frameworks/base/packages/settingsprovider/res/valuse/Defaults.xml:
true
1
false
true
如默认的active的情景模式是General,假设在前面设置了DEFAULT_DTMFTONE_GENERAL = false,则对应的系统的默认的dtmf如果要保持与情景模式一致,则需要设置def_dtmftone_enabled对应为true,若DEFAULT_SOUNDEFFECT_GENERAL=false,则对应的系统默认的sound effect的值如果保持与情景模式一致,则需要设置def_sound_effects_enabled为false。以此类推其他的设置。

发布了234 篇原创文章 · 获赞 64 · 访问量 95万+

猜你喜欢

转载自blog.csdn.net/zhoumushui/article/details/101216085