自定义呼叫铃声

更新时间: 2024/10/14 16:15:20

本文介绍在呼叫组件中如何自定义呼叫铃声,包括被叫铃声、呼叫等待铃声等。

功能介绍

SoundHelper 类主要用于设置呼叫等待时、被叫时的铃声。

实现方法

如果您希望自定义呼叫组件中用户的响铃,请在初始化呼叫组件时,在 CallKitUIOptions 对象中生成 soundHelper 实例,设置呼叫铃声。

  1. 将自定义铃声放在 raw 文件夹下。

  2. soundResources 方法中设置铃声的资源 ID。

    soundResources 方法的 ringerTypeEnum 参数为枚举类型。组件在内部实现了响铃逻辑,共分为五种类型的铃声,通过 AVChatSoundPlayer.RingerTypeEnum 进行枚举铃声的种类,具体如下:

    RingerTypeEnum 类型 说明
    CONNECTING 主叫呼叫提示。
    NO_RESPONSE 被叫超时未响应。
    PEER_BUSY 被叫忙线。
    PEER_REJECT 被叫拒接。
    RING 被叫响铃。
  3. (可选)自实现铃声播放。

    适用于 2.0.0 及之后的版本

    呼叫组件从 2.0.0 版本起,默认通过 SoundPool 类实现铃声播放,存在一些铃声文件的限制。您可以重写 playstop 方法,实现自定义呼叫铃声。

    JavaCallKitUIOptions options = new CallKitUIOptions.Builder()
    .soundHelper(new SoundHelper(){
        /**
        * 若用户需要修改铃声,其他不需要变化,若不需要播放则直接返回 null
        */
        @Nullable
        @Override
        public Integer soundResources(@NonNull AVChatSoundPlayer.RingerTypeEnum type) {
        return super.soundResources(type);
        }
        /**
        * (可选)用户可在此实现自己的铃声播放逻辑和{@link SoundHelper#stop(Context, AVChatSoundPlayer.RingerTypeEnum)}方法同时修改
        */
        @Override
        public void play(@NonNull Context context, @NonNull AVChatSoundPlayer.RingerTypeEnum type) {
        super.play(context, type);
        }
        /**
        * (可选)用户可在此实现自己的铃声停止逻辑和{@link SoundHelper#play(Context, AVChatSoundPlayer.RingerTypeEnum)}方法同时修改
        */
        @Override
        public void stop(@NonNull Context context, @Nullable AVChatSoundPlayer.RingerTypeEnum type) {
        super.stop(context, type);
        }
    })
    // 初始化呼叫组件时,传入 options 配置信息
    CallKitUI.init(getApplicationContext(), options);
    
    适用于 2.0.0 之前的版本

    SoundHelper#isEnabletrue 表示响铃,false 表示禁止响铃,您可以通过此方法完成响铃的开关。

    JavaCallKitUIOptions options = new CallKitUIOptions.Builder()
    .soundHelper(new SoundHelper(){
        @Override
        public boolean isEnable() {
            return true;
        }
    
        @Nullable
        @Override
        public Integer soundResources(@NonNull AVChatSoundPlayer.RingerTypeEnum type) {
        return super.soundResources(type);
        }
    }
    // 初始化呼叫组件时,传入 options 配置信息
    CallKitUI.init(getApplicationContext(), options);
    
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 实现方法