MTK 如何设置视频来电的默认铃声

[DESCRIPTION]
 
背景:
原始设计语音来电铃声和视频来电铃声是一起设置的。 即设置的默认铃声同时是语音来电和视频来电的铃声。
 
需求:
只想单独设置视频来电的默认铃声。
 
实现思路:
参考原先来电铃声的设置机制,给视频来电铃声单独设置属性写默认的铃声名称,然后在文件扫描时,判断扫描到的文件是设置的默认视频铃声的文件名,则在database中填写视频来电的键值为此铃声;
 
PS:被设置的铃声首先要存在于系统中,关于如何添加系统铃声请参考”FAQ06323[Audio Profile]如何添加以及删减特定的默认通知铃声,如何设置默认铃声
 
[SOLUTION]
 
1,添加Video Call默认铃声的属性:
alps\build\target\product\core.mk中添加“ro.config.video_call”:

PRODUCT_PROPERTY_OVERRIDES := \
    ro.config.notification_sound=Proxima.ogg \
    ro.config.alarm_alert=Alarm_Classic.ogg \
    ro.config.ringtone=Backroad.ogg \
     ro.config.video_call=VideocallRt.ogg

 
2,添加对扫描到文件的判断是否是默认Vide Call的默认铃声:
alps\frameworks\base\media\java\android\media\mediascanner.java:

1),添加成员变量用做后面的判断:
private String mDefaultRingtoneFilename;
private String mDefaultVideocallFilename;
private boolean mDefaultRingtoneSet;
private boolean mDefaultVideoCallSet;
private static final String RINGTONE_SET = "ringtone_set";
private static final String VIDEOCALL_SET = "videocall_set";

2):添加读取video call默认铃声的系统属性:
private void setDefaultRingtoneFileNames() {
        mDefaultRingtoneFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
                + Settings.System.RINGTONE);
         mDefaultVideocallFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
                + Settings.System.VIDEO_CALL);//add this line
...
    }
 
3):添加对扫描到的文件是否是视频来电默认铃声的判断:
参考标有//start modify”和//end modify”中间包含的为添加整段code,"//add this line"和”Modify this line"为添加添加的语句和修改的语句。
并请留意“else if (ringtones && doesSettingEmpty(RINGTONE_SET)&&!videocall) {”中要一定注释掉对VideoCall的设置:

private Uri endFile(){
        boolean videocall = false; //add this line
.....
 if (notifications &&((mWasEmptyPriorToScan && !mDefaultNotificationSet) ||
                        doesSettingEmpty(NOTIFICATION_SET))) {
                                ....   
//start modify
} else if(ringtones && ((mWasEmptyPriorToScan && (!mDefaultRingtoneSet||!mDefaultVideoCallSet)) || doesSettingEmpty(RINGTONE_SET)|| doesSettingEmpty(VIDEOCALL_SET))) {
                    if (TextUtils.isEmpty(mDefaultRingtoneFilename) ||
                            doesPathHaveFilename(entry.mPath, mDefaultRingtoneFilename)) {
                        needToSetSettings = true;
                        /// M: Adds log to debug setting ringtones.
                        Xlog.v(TAG, "endFile: needToSetRingtone=true.");
                    }
                    if (TextUtils.isEmpty(mDefaultVideocallFilename) ||
                            doesPathHaveFilename(entry.mPath, mDefaultVideocallFilename)) {
                        needToSetSettings = true;
                        videocall = true;
                        /// M: Adds log to debug setting ringtones.
                        Xlog.v(TAG, "endFile: needToSetRingtone=true.");
                    }

                }
 else if (alarms && ((mWasEmptyPriorToScan && !mDefaultAlarmSet) ||
                        doesSettingEmpty(ALARM_SET))) {
                      ...                   
}
 
...
if(needToSetSettings) {
                if (notifications && doesSettingEmpty(NOTIFICATION_SET)) {
                  .....
//start modify
                 } else if (ringtones && (doesSettingEmpty(RINGTONE_SET)||doesSettingEmpty(VIDEOCALL_SET)) {
                    if(videocall){
                      setSettingIfNotSet(Settings.System.VIDEO_CALL, tableUri, rowId);
                    setProfileSettings(RingtoneManager.TYPE_VIDEO_CALL, tableUri, rowId);
                    mDefaultVideoCallSet = true;
                    setSettingFlag(VIDEOCALL_SET);
                    }
                    else{
                    setSettingIfNotSet(Settings.System.RINGTONE, tableUri, rowId);
                    // setSettingIfNotSet(Settings.System.VIDEO_CALL, tableUri, rowId); //modify this line
                    setSettingIfNotSet(Settings.System.SIP_CALL, tableUri, rowId);
                    setProfileSettings(RingtoneManager.TYPE_RINGTONE, tableUri, rowId);
                    // setProfileSettings(RingtoneManager.TYPE_VIDEO_CALL, tableUri, rowId);//modify this line
                    setProfileSettings(RingtoneManager.TYPE_SIP_CALL, tableUri, rowId);
                    mDefaultRingtoneSet = true;
                    setSettingFlag(RINGTONE_SET);
                    }

                    Xlog.v(TAG, "endFile: set ringtone. uri=" + tableUri + ", rowId=" + rowId);
                  //end modify
                }else if (alarms && doesSettingEmpty(ALARM_SET)) {
                   ....
            }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值