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

还要涉及字符串的修改