Android 自定义ToneGenerator

本文介绍了如何在Android中自定义ToneGenerator,包括在ToneGenerator.java中添加新的音调,更新ToneGenerator.h的tone_type枚举,以及在ToneGenerator.cpp中配置声音序列。通过这些步骤,可以创建具有特定频率和间隔的自定义响铃声音,并能重复播放。别忘了编译相关库文件以应用改动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、修改 frameworks/base/media/java/android/media/ToneGenerator.java

  在类中加入自己需要创建的ToneGenerator的名字

  eg: public static final int TONE_MAYDAY = 99;  //注意这个属性值要大于98,系统中默认已经有98个


2、修改 frameworks/av/include/media/ToneGenerator.h

  enum tone_type {

      .....

                        .....

               TONE_MAYDAY,   //add

               NUM_TONES,
               NUM_SUP_TONES = LAST_SUP_TONE-FIRST_SUP_TONE+1

  };


3、修改 frameworks/av/media/libmedia/ToneGenerator.cpp

  在const ToneGenerator::ToneDescriptor ToneGenerator::sToneDescriptors[]中找到对应的位置添加

  //duration为时间间隔,waveFreq为频率,最多支持三个,如下的表示。

  { segments: { { duration: 2000, waveFreq: { 960, 540, 0 }, 0, 0 },  //2s内按照960Hz+540Hz进行响铃
                      { duration: 500, waveFreq: { 0 }, 0, 0 },                                      //暂停0.5s
                      { duration: 1000, waveFreq: { 400, 960, 0 }, 0, 0 },      //1s内按照400Hz+960Hz进行响铃

                      { duration: 500, waveFreq: { 0 }, 0, 0 },                                      //暂停0.5s
                      { duration: 1000, waveFreq: { 500, 800, 0 }, 0, 0 },                  //1s内按照500Hz+800Hz进行响铃
                      { duration: 500, waveFreq: { 0 }, 0, 0 },                                      //暂停0.5s
                      { duration: 0 , waveFreq: { 0 }, 0, 0}},
          repeatCnt: 3,                                                                                             //重复次数
          repeatSegment: 0 },


需要编译framework.jar、framework2.jar以及libmedia.so

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值