MTK铃声有几个地方要修改:
1,闹钟和来电铃声Midi铃声对应于 custpack_audio.c 下的变量 custpack_audio
这个数组是复交类型的变量,类型我们可以分析下:如下定义的
typedef struct {
#ifdef MIDI_IN_CUSTPACK_BIN
kal_uint32 midis_count;
const audio_resource_struct
mtk_resource_midis[MAX_MIDI_ID - MIN_MIDI_ID + 1];
#endif
} custpack_audio_header;
这个中间还有很多的开关,不得不说MTK用心良苦啊!
修改的时候要注意以下几个地方:
(1),个数,也就是custpack_audio
第一个成员,这个数字要和后面的铃声的资源个数统一,并且要修改所容纳的总数,由定义可以看出:MAX_MIDI_ID,
MIN_MIDI_ID 这两个决定了总共有多少个铃声,修改MAX_MIDI_ID就可以了!
(2),类型 每种铃声对应自己的类型,后面要附上相应的类型说明
(3)melody铃声类型修改:
resource_audio.c
下的这个数组mtk_resource_imelodys,这个就是Ring类型的铃声,也就是和旋铃声
也是要注意个数:MAX_RING_TONE_ID和 MIN_RING_TONE_ID 来控制总的个数,主要是修改大的数字
MAX_RING_TONE_ID
*另注,想我们大多数的项目不需要midi铃声,故可以在 调用这个函数的地方,屏蔽这个铃声
GetMidiRange(&midiToneStartId,
&midiToneTotalId);
midiToneTotalId = 0;
通过来获取总数的地方,直接给赋值总数为0,主要就得不到了
2,开关机 和翻盖铃声 对应于resource_audio.c 下的数组
mtk_resource_sounds,修改相应的资源,还有对应的个数,MAX_SND_ID修改就可以了
3,短信铃声 对应于resource_audio.c 下的数组 mtk_resource_message_sounds
修改相应的资源,也是第一个的个数,修改MAX_MSG_SND_ID就可以了
如果要是要求开机和铃音用一套资源的,他们的个数必须保持一致,要不就自己用自己的资源
其实主要是这个函数来播放音乐,找到相应的数组中的资源
aud_melody.c
aud_melody_play_by_id
这个函数来实现的
要是修改铃声为mp3格式的话,就用数组mtk_resource_imelodys来操作,并把相应的不要的那个数组的总数赋值为0,MAX_RING_TONE_ID,修改它
在这个函数设置,mmi_profiles_get_dynamic_tone_ids,
并在用到GetMidiRange函数的地方,把它的总数赋值为0
GetMidiRange((PU8) & gstartMidiId, (PU8)
& gtotalMidiId);
gtotalMidiId = 0;
要是铃声为midi格式的话,就修改数组custpack_audio,并修改不要的那个数组的总数,赋值为0,
修改 MAX_MIDI_ID
在这个函数设置,mmi_profiles_get_dynamic_tone_ids,
并在用到GetRingToneRange函数的地方,把它的总数赋值为0
GetRingToneRange((PU8) & gstartRingId, (PU8)
& gtotalRingId);
gtotalRingId = 0;
还要修改NVram中的默认值
nvram_common_config.c
下的这个变量
NVRAM_PROFILES_DEFAULT
如果铃声是mp3的话
在nvram中修改相应的值,从小的开始
#define MIN_RING_TONE_ID 101
#define MAX_RING_TONE_ID 105 //110
如果是midi的话,修改,从小的开始
#define MIN_MIDI_ID 151
#define MAX_MIDI_ID 160
还要涉及字符串的修改