【问题标题】:Webrtc Android DTMF SupportWebrtc Android DTMF 支持
【发布时间】:2020-01-28 17:27:49
【问题描述】:

我正在尝试基于 WebRTC 为 Android/iOS 应用程序实现 DTMF。 是否有适用于 Android 的 DTMF 的 API?我尝试过调用以下命令:

m_peerConnectionFactory.createdtmfsender(localAudioTrack);
m_peerConnectionFactory.insertDtmf(tone, duration,gap);

我已经尝试将上述 api 用于 javascript,它在浏览器上运行良好,但无法在 Android 上运行。 我还没有在 iOS 上尝试过,因为我需要先让它在 android 上运行。

请让我知道这是否在 Android/iOS 上受支持?如果是的话,任何人都可以帮助我正确的api

使用的 libjingle 版本:chrome 74.0.3729.169

【问题讨论】:

    标签: webrtc rtcpeerconnection peer-connection webrtc-android webrtc-ios


    【解决方案1】:

    我知道它适用于 android 和 iOS 。 Api createdtmfsender 已弃用,详情可查看here

    安卓代码:

    RtpSender m_audioSender = null;
    for (RtpSender sender : m_peerConnection.getSenders()) {
    //m_peerConnection is object of webRTC peerconnection
      if (sender.track().kind().equals("audio")) {
       m_audioSender = sender;
      } 
    }
    if (m_audioSender != null) {
      DtmfSender dtmfSender = m_audioSender.dtmf();
      dtmfSender.insertDtmf(m_tone, 1000, 500);//Here the timers are in ms
    

    iOS 代码

    -(void)dtmfTonePlayer: (NSString *)dtmfTone {
        RTCRtpSender* m_audioSender = nil ;
        for( RTCRtpSender *rtpSender in m_peerConnection.senders){
         if([[[rtpSender track] kind] isEqualToString:@“audio”]) {
           DLog(@“Assigning audio to rtp sender”);
           m_audioSender = rtpSender;
         }  
        }
         if(m_audioSender){
         NSOperationQueue *queue = [[NSOperationQueue alloc] init];
         [queue addOperationWithBlock:^{
            BOOL istoneplayed = [m_audioSender.dtmfSender insertDtmf :(NSString *)dtmfTone 
            duration:(NSTimeInterval)2 interToneGap:(NSTimeInterval)0.5];
            NSLog(@“DTMF Tone played :: [%s]“, istoneplayed ? “true” : “false”);
         }];
         }
       }
    

    【讨论】:

    • 这救了我的命。我使用这些代码为 Flutter webrtc 包添加 dtmf 功能。谢谢
    • @Aagman,你在做任何事情来生成拨号音吗?当您发送 dtmf 时,javascript web sdk 会发出声音,但 iOS 和 android sdk 不会。
    • @giorgos.nl,您在这里使用的是哪个 SDK,我开发了一个应用程序,我正在使用它。从本机移动键盘发送数字
    • 我正在使用最新的 Android SDK,我也在做同样的事情,从键盘发送数字。我发现了音调:使用ToneGenerator DTMF 音调:developer.android.com/reference/android/media/…
    • 这里不需要使用音调生成器方法,因为它适用于从本地移动框架生成音调。但是,如果您使用的是 WebRtc ,您只需要使用上面提到的代码并将要作为 DTMF 发送的数字值提供给 m_tone 变量。
    猜你喜欢
    • 1970-01-01
    • 2023-01-12
    • 2020-08-04
    • 2023-03-17
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多