MTK 如何设置视频来电的默认铃声
来源:互联网 发布:华为云计算工程师级别 编辑:程序博客网 时间:2024/04/29 09:56
[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 boolean mDefaultVideoCallSet;
private static final String RINGTONE_SET = "ringtone_set";
private static final String VIDEOCALL_SET = "videocall_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
...
}
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.");
}
} 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)) {
doesPathHaveFilename(entry.mPath, mDefaultVideocallFilename)) {
needToSetSettings = true;
videocall = true;
videocall = true;
/// M: Adds log to debug setting ringtones.
Xlog.v(TAG, "endFile: needToSetRingtone=true.");
}
Xlog.v(TAG, "endFile: needToSetRingtone=true.");
}
} else if (alarms && ((mWasEmptyPriorToScan && !mDefaultAlarmSet) ||
doesSettingEmpty(ALARM_SET))) {
...
}
...
if(needToSetSettings) {
if (notifications && doesSettingEmpty(NOTIFICATION_SET)) {
.....
if(needToSetSettings) {
if (notifications && doesSettingEmpty(NOTIFICATION_SET)) {
.....
//start modify
} else if (ringtones && (doesSettingEmpty(RINGTONE_SET)||doesSettingEmpty(VIDEOCALL_SET)) {
} 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);
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);
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)) {
....
}
}else if (alarms && doesSettingEmpty(ALARM_SET)) {
....
}
0 0
- MTK 如何设置视频来电的默认铃声
- Android 如何设置视频来电的默认铃声
- Android来电铃声默认设置的实现方法与如何设置语音来电的默认铃声
- Android来电铃声默认设置的实现方法与如何设置语音来电的默认铃声
- 设置默认来电铃声 android
- Android来电铃声默认设置的实现方法与怎么设置语音来电的默认铃声
- Android来电铃声默认设置的实现方法与怎么设置语音来电的默认铃声
- 我的Android进阶之旅------>Android系统设置默认来电铃声、闹钟铃声、通知铃声
- 设置双卡不同的来电默认铃声
- 第三方播放器设置的来电铃声,在铃声列表选择框里不能显示mtk
- 如何编写程序设置Android来电铃声
- 如何编写程序设置Android来电铃声
- android 设置来电铃声
- Android来电铃声设置
- android如何替换contact的来电铃声
- 如何添加以及删减特定的默认通知铃声,如何设置默认铃声
- mt6735 【Audio Profile】如何分别配置视频铃声的卡1卡2默认铃声
- 如何修改mtk的系统开机铃声
- 让Visual Studio Shell新建C#项目和文件就这么简单
- hdu 2819 Swap
- HASH算法
- Java 内存管理漫谈
- HDU - 1203 I NEED A OFFER!
- MTK 如何设置视频来电的默认铃声
- 数学符号
- 超级搜索 v1.0.1(附带 插件开发模板)
- Ubuntu 12.10 安装ATI 显卡驱动
- 对比接口和抽象类(面试中经常问到的)
- 工作中常用软件
- 微务宝——提升用户体验 真正实现“赢”销
- 实现手机扫描二维码进行登录
- sdf