Webrtc Android DTMF支持

3

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

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

我已经尝试使用上述Javascript API,它在浏览器上运行良好,但无法在Android上运行。我还没有在iOS上尝试过,因为我需要先让它在Android上运行。
请告诉我这是否支持Android/iOS?如果是,有人可以帮我提供正确的API吗?
使用的libjingle版本:Chrome 74.0.3729.169。
1个回答

6

我已成功在安卓和iOS上实现了。Api createdtmfsender 已被弃用,详情请见这里

安卓代码:

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”);
     }];
     }
   }

@Aagman,你有没有做任何生成拨号音的操作?JavaScript Web SDK在发送DTMF时会生成声音,但iOS和Android SDKs则不会。 - giorgos.nl
@giorgos.nl,你在这里使用的是哪个SDK?我已经开发了一个应用程序,可以通过原生移动键盘发送数字。 - Aagman
我正在使用最新的Android SDK,并且正在做同样的事情,从键盘发送数字。我了解到有关音调的信息:使用ToneGenerator DTMF音调:https://developer.android.com/reference/android/media/ToneGenerator#TONE_DTMF_1 - giorgos.nl
在这里,你不需要使用音调生成器方法,因为它适用于从你的本机移动框架生成音调的情况。但是在你的情况下,如果你正在使用WebRtc,你只需要使用上面提到的代码,并将你想要发送的数字值作为DTMF传递给m_tone变量即可。 - Aagman
输入"1"将发送与数字键盘上的1相对应的DTMF音调给远程对等方。当您获得一个真实的返回值时,这意味着音调已成功创建。 - Aagman
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接