热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MTK的铃声修改与替换

MTK的资源一直深受研发人诟病,几乎成为初入手MTK人的挥之不去的痛楚,主要是因为缺乏相关的专业管理工具。虽然有一些公司自己开发一些图片了,

MTK的资源一直深受研发人诟病,几乎成为初入手MTK人的挥之不去的痛楚,主要是因为缺乏相关的专业管理工具。虽然有一些公司自己开发一些图片了,字串,菜单了管理工具,但都由于各种各样的条件限制,没有流通开来。比如菜单,明明已经加好了,就是显示不出来,明明个数已经算对了,仍然显示错乱,即使是一个训练有素的老鸟,拿到一份别的公司的代码,不仔细研究一下随便添加菜单,十分八九也会出错。所幸后来MTK添加了新的菜单函数,为我们许多人节省了数菜单个数的时间。再比如图片,既有放在压缩包里的,也有放在压缩包外的,还有直接在代码里使用数组存储的,为初学者造成的困惑着实不小。

这里只是简单介绍一下MTK的铃声。有关菜单,图片,字串,NV, 字库,主题了,有时间慢慢写。

MTK支持的铃声还是比较多的,常见的MP3,WAV,MID等等都支持。同时MTK既支持数组存储的铃声,也支持资源类型的铃声。不过习惯上我们一般都使用数组类型的铃声。所谓数组类型的铃声,就是把铃声数据按字节顺序存储在数组中,标明铃声的类型和长度,供播放函数使用。MTK主要支持的文件格式可以在项目中文件med_main.h中找到,大概包括以下几种:

enum{
   MDI_FORMAT_NONE=-1,
   MDI_FORMAT_GSM_FR,               
   MDI_FORMAT_GSM_HR,              
   MDI_FORMAT_GSM_EFR,              
   MDI_FORMAT_AMR,                     
   MDI_FORMAT_AMR_WB,                 
   MDI_FORMAT_DAF,                    
   MDI_FORMAT_AAC,                    
   MDI_FORMAT_PCM_8K,                 
   MDI_FORMAT_PCM_16K,                
   MDI_FORMAT_G711_ALAW,           
   MDI_FORMAT_G711_ULAW,           
   MDI_FORMAT_DVI_ADPCM,           
   MDI_FORMAT_VR,                  
   MDI_FORMAT_WAV,                 
   MDI_FORMAT_WAV_ALAW,            
   MDI_FORMAT_WAV_ULAW,             
   MDI_FORMAT_WAV_DVI_ADPCM,      
   MDI_FORMAT_SMF,                  
   MDI_FORMAT_IMELODY,           
   MDI_FORMAT_SMF_SND,             
   MDI_FORMAT_MMF,                
   MDI_FORMAT_AU,                
   MDI_FORMAT_AIFF,                
   MDI_FORMAT_VRSI,                
   MDI_FORMAT_WMA,                   
   MDI_FORMAT_M4A,                  
   MDI_FORMAT_3GP,                    
   MDI_FORMAT_MP4,                         
   MDI_FORMAT_JPG,                            
   MDI_FORMAT_GIF,                            
   MDI_FORMAT_MJPG,                         
   MDI_FORMAT_PNG,                          
   MDI_NO_OF_FORMAT
};

经常用作手机铃声的格式是以下几种(每一种都有对应的数值,主要用于播放函数的参数):

#define FORMAT_IMY "18"  
#define FORMAT_MID "17"  
#define FORMAT_WAV "13"  
#define FORMAT_MMF "20"  
#define FORMAT_MP3 "5"  
#define FORMAT_PCM "7"  
#define FORMAT_DVI "11"  
#define FORMAT_AMR "3"  

获取数组铃声的方式是十分简单的。可以从别的项目拷贝,也可以使用工具软件自己生成,如果实在不行,也可以自己写个读取文件的程序一个字节一个字节读出来并写到文本文件里。这里不做详述。

MTK主要的铃声一般放在文件resource_audio.c和文件custpack_audio.c两个文件,照相机的铃声是另外在resource_camera_skins.c文件中的。

首先对resource_camera_skins.c文件里的铃声做介绍:

该文件三个数组:

camera_sound_shutter_1

camera_sound_shutter_2

camera_sound_shutter_3

分别对应照相机拍照时的三种声音,这三个声音默认是WAV格式的,也可以改为MP3格式,但对MP3似乎对MP3格式有些挑剔,有些MP3会播不出来或者变音,需要试验才知道。调用的地方在mmi_camera_entry_burstshot_capture_state函数中,如果修改了铃声的格式,一定要在调用的地方对文件类型做修改。

camera_sound_countdown

对应连拍时的声音,默认文件类型同上。

介绍一下custpack_audio.c里的铃声:

该文件里有一个名字为custpack_audio类型为custpack_audio_header的结构,该结构体的描述了铃声的个数及铃声的类型,数据,大小等信息,默认的铃声是15个,这个结构的数据主要是修改情景模式里闹铃,电话的后十五首铃声。而闹铃,电话,而通话和闹铃的前10首(默认是10首)在文件resource_audio.c里修改;

介绍一下文件resource_audio.c,该文件里数据比较多,也比较复杂,主要包含了电话,短信,闹铃,搜网,开关机,开合盖等铃声。通话的前10首铃声包含在数组mtk_resource_imelodys中(数目是MTK默认,并不总是这样,开发人员可以修改铃声个数),闹铃一般会和通话使用相同的铃声,短信铃声包含在数组mtk_resource_message_sounds,开关机包含在数组mtk_resource_sounds中,开合盖也使用mtk_resource_sounds,mtk_resource_sounds和mtk_resource_message_sounds在MTK默认的情况下调用的音源是一样的,可以根据需要添加或者改为不一样的,如果修改了音源数组的文件类型,MTK默认的情况下一定要同步修改两个地方。搜网声一般使用开合盖的第三个铃声,不带盖的大概会使用mtk_resource_sounds的第三个铃声。如果要修改某类铃声个数,一定要同步修改resource_audio.h里默认的铃声个数。

如果你想使用资源铃声,只要像添加图片一样,在Customer里创一个文件夹,放入你的铃声,然后像添加图片一样添加一个ID,并在模块对应的RES文件里绑定把ID和路径绑定。可以使用mdi_audio_play_id播放,或者使用get_audio获得数据,然后调用mdi_audio_snd_play_string_with_vol_path播放

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/blogercn/archive/2009/08/26/4488292.aspx




推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 本文介绍如何使用 Python 提取和替换 .docx 文件中的图片。.docx 文件本质上是压缩文件,通过解压可以访问其中的图片资源。此外,我们还将探讨使用第三方库 docx 的方法来简化这一过程。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
author-avatar
手机用户2502937497
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有