设置双卡铃声大概需要修改如下地方。
1.设置APP里面,N默认只存储了一个铃声URI。现在改成双铃声,需要针对SIM1,SIM2分别保存URI。
2.在Telecom里面,播放铃声的地方,根据当前SIM卡,读取对应的URI。
3.系统第一次启动会调用frameworks/base/media/java/android/media/MediaScanner.java文件的endfile函数设置默认铃声
,现在改成支持设置双卡铃声,需要视情况做调整。
对于双卡铃声设置,您可以去参考M版本,对于M版本里面audioprofile那一套东西可以不用管,具体的参考项如下。
1.N版本铃声设置的代码在packages/apps/Settings/src/com/android/settings/notification/SoundSettings.java和
packages/apps/Settings/src/com/android/settings/DefaultRingtonePreference.java文件对应M版本的代码在
packages/apps/Settings/src/com/mediatek/audioprofile/Editprofile.java文件和
packages/apps/Settings/src/com/mediatek/audioprofile/DefaultRingtonePreference.java文件
2.M版本SIM选择框的代码在packages/apps/Settings/src/com/mediatek/audioprofile/SubSelectSettings.java文件,
N版本可以参考它去实现
3.M版本根据不同SIM卡选择不同铃声播放的地方在packages/services/Telecomm/src/com/android/server/telecom/Ringer.java文件
N版本可以参考去修改对应的packages/services/Telecomm/src/com/android/server/telecom/Ringer.java文件。
铃声配置保存
N版本获取和保存铃声配置的代码在frameworks/base/media/java/android/media/RingtoneManager.java文件的getActualDefaultRingtoneUri函数
和setActualDefaultRingtoneUri。现在要改成保存双卡铃声。可以使RingtoneManager的getActualDefaultRingtoneUri和setActualDefaultRingtoneUri函数
保持不变,但只用于操作SIM卡1的铃声,再参考getActualDefaultRingtoneUri和setActualDefaultRingtoneUri函数实现两个函数用于获取和保存SIM卡2的铃声。