标签: dtmf

在呼叫中的上行链路上发送DTMF音调

我正在开展一个项目,要求我的应用程序能够在活动呼叫期间在语音的上行链路频率上发送DTMF音调.

我的两个条件是:

  • 我们不使用定制的Android平台
  • 我们不需要根电话

我花了几天时间做作业,并且我知道当前的SDK /标准API不支持通话中的DTMF发送.但是,通过使用相关的类com.android.internal.telephony我希望模仿本机Phone应用程序如何做到这一点.我在网站上关注如何使用标准第三方应用程序的内部API.

我还设置了Android OS开发环境,并且能够在模拟器上以调试模式运行Phone应用程序以确定其内部工作方式.

我在股票标准模拟器上尝试了各种方法,但我得到的错误是:

  1. 尝试使用android.uid.phone的sharedUserId基于Phone.apk的源安装重命名的应用程序后,我得到:

    安装错误:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    毫无疑问,由于我没有系统证书来签署它.

  2. 在尝试根据Phone.apk来源的相关DTMF音调发送代码编写自定义应用程序后,在设置PhoneFactory时出现以下错误;

    java.lang.SecurityException:Permission Denial:不允许发送广播android.provider.Telephony.SPN_STRINGS_UPDATED.

    毫无疑问,由于Android应用程序没有正确的权限,尽管AndroidManifest.xml设置的权限与Phone.apk相同.

我不知道还能尝试什么.有没有人有什么建议?

先谢谢,西蒙.

android telephony internal dtmf in-call

21
推荐指数
2
解决办法
3万
查看次数

什么是AudioFlinger,为什么TONE_PROP_ACK失败?

在我的应用程序中,我发出以下声明:

toneGenerator.startTone(ToneGenerator.TONE_PROP_ACK, 600);
Run Code Online (Sandbox Code Playgroud)

这对于运行Android 2.3.3的便宜的LG LS670非常有效,但在我拥有的所有其他手机上都没有,从Android 2.2.1到Android 2.3.4.

所以我知道操作系统版本在这里没有发挥作用(我还在文档中验证了它自API 1以来一直受支持).

此外,Ringer音量和媒体音量都设置为最大值,toneGenerator初始化为:

toneGenerator = new ToneGenerator(ToneGenerator.TONE_DTMF_1, 100);
Run Code Online (Sandbox Code Playgroud)

我确认Settings.System.DTMF_TONE_WHEN_DIALING设置为1.

此不一致的行为(在不同的手机),百思不得其解,我检查了系统日志时发生这种情况,唯一的区别怀疑我能找到是谁的手机未能声音TONE_PROP_ACK在他们的日志这一行:

AudioFlinger    setParameters(): io 25, keyvalue routing=0, tid 155, calling tid 121
Run Code Online (Sandbox Code Playgroud)

AudioFlinger的目的是什么TONE_PROP_ACK?它与静音有什么联系?

任何想法如何修复我的代码,使得TONE_PROP_ACK总会响起,无论手机型号的?

android dtmf android-audiomanager audioflinger

19
推荐指数
1
解决办法
1万
查看次数

我可以在Android手机上设置IVR吗?

我认为我可以让应用程序自动响应来电.这有可能吗?

我想为小型企业构建一个Android应用程序.使用此应用程序,业务所有者可以:

  • 设置自定义IVR菜单
  • 自动转发呼叫到另一个号码,具体取决于呼叫的时间和用户在IVR菜单中选择的选项
  • 在呼叫中自动拨入(合并呼叫)另一个号码

有可能做到这一切吗?

android ivr dtmf

15
推荐指数
0
解决办法
5749
查看次数

拨号时隐藏dtmf音

我打电话给一个号码,然后发送dtmf音

String number = "tel:+1234567,890#";
Intent c1 = new Intent(android.content.Intent.ACTION_CALL, Uri.parse(number));
Run Code Online (Sandbox Code Playgroud)

目前它可以拨打1234567,等待大约3秒,然后拨打890.功能还可以发送890带有哪种不太一致的音调,有没有办法发送890没有音调回复?

android phone-call dtmf

9
推荐指数
1
解决办法
1099
查看次数

显示通话中拨号盘 - 在通话期间拨打号码 - DTMF

我接听电话后想拨打一个号码,通常由通话拨号盘完成.

我尝试了以下方法,但是开始拨打新的电话(ACTION_VIEW也是如此).

Intent dial = new Intent(Intent.ACTION_DIAL);
dial.setData(Uri.parse("tel:9"));
startActivity(dial);
Run Code Online (Sandbox Code Playgroud)

我的猜测是"tel:"触发了一个新的拨号序列.我可能需要的是显示通话中的拨号盘并模拟击键.

任何人?

编辑:我发现这个问题 启动InCallScreen活动 让我觉得我需要发送一个keydown事件到'com.android.phone.InCallScreen',但我不知道该怎么做.这也是一个直接相关的问题,已经(并且仍然)开放多年:http: //code.google.com/p/android/issues/detail?id = 1428

java android dtmf android-intent

8
推荐指数
1
解决办法
1293
查看次数

从WAV文件解码DTMF

继我之前的问题之后,我的目标是从C#中检测WAV文件中的DTMF音调.但是,我真的很难理解如何做到这一点.

我知道DTMF使用频率组合,并且可以使用Goertzel算法......不知何故.我抓住了一个Goertzel代码片段,我尝试将.WAV文件推入其中(使用NAudio读取文件,这是一个8KHz单声道16位PCM WAV):

 using (WaveFileReader reader = new WaveFileReader(@"dtmftest_w.wav"))
  {
      byte[] buffer = new byte[reader.Length];

      int read = reader.Read(buffer, 0, buffer.Length);
      short[] sampleBuffer = new short[read/2];
      Buffer.BlockCopy(buffer, 0, sampleBuffer, 0, read/2);
      Console.WriteLine(CalculateGoertzel(sampleBuffer,8000,16));                 
   }

 public static double CalculateGoertzel(short[] sample, double frequency, int samplerate)
   {
      double Skn, Skn1, Skn2;
      Skn = Skn1 = Skn2 = 0;
      for (int i = 0; i < sample.Length; i++)
         {
            Skn2 = Skn1;
            Skn1 = Skn;
            Skn = 2 * Math.Cos(2 * Math.PI * …
Run Code Online (Sandbox Code Playgroud)

c# dtmf goertzel-algorithm

8
推荐指数
1
解决办法
2539
查看次数

生成DTMF音调

我想知道是否有人遇到过在iPhone SDK中生成音调的方法.我试图生成DTMF音调,似乎找不到任何实质性的东西.我希望能够指定播放音调的时间长度(即模拟按住按钮而不是简单地按下它.

我发现了一个名为iPhreak的开源应用程序.它应该产生DTMF音调来欺骗付费电话(我向你保证这不是我的意图 - 我的公司处理基于电话的内部通信系统).该应用程序的唯一问题是开源项目中缺少文件.也许其他人已经让这个项目在过去工作了?

如果有人知道我会在哪里找到这样的东西,我将非常感谢我的投票:)

iphone generator dtmf

7
推荐指数
2
解决办法
6461
查看次数

从Python将键盘插入Linux控制台

我最近遇到了一个相当奇怪的任务,一个结果是必须能够使用DTMF(又名"Touch Tone")音调来控制非X Linux计算机的终端.计算机有一个调制解调器,可以通过ALSA访问,因此sox"rec"程序,这是我正在读取输入.有问题的计算机完全隔离,没有任何以太网或其他网络接口.我正在使用的Goertzel算法实现效果非常好,eSpeak语音合成引擎也是唯一的输出源; 这适用于任何Touch Tone手机.它读回两个输入(输入是八进制数字,一次一个ASCII字节)和dashshell反馈的任何内容 - 提示,命令输出等,使用ASCII助记符作为控制字符.

我用来与之交互的当前方法dash和通过它启动的程序是pexpect模块.但是,我需要它能够按需读回光标所在行的全部内容,而且我不记得pexpect能够这样做(如果是,我不知道.).我能想到的唯一其他解决方案是以某种方式使用Python来控制或充当键盘和控制台驱动程序.

这确实是唯一可行的方法(如果是这样,甚至可以用Python吗?),还是有另一种直接访问控制台内容的方法?

编辑:通过愚蠢的运气,我刚刚发现PExpect的SVN版本有pexpect.screen.但是,它没有任何实际运行程序的方法.我必须密切关注它的发展.

python linux keyboard console dtmf

7
推荐指数
1
解决办法
938
查看次数

Twilio - 拨出电话 - 播放DTMF音

在我的Twilio基础应用程序中,我通过Twilio rest API创建传出呼叫.

当目标方响应时,我把他带到最近创建的会议.

问题是:在将他带到会议之前,如何播放某些DTMF音?

响应方是一个接受DTMF音调的特定系统,我需要播放一些数字.

我已阅读文档,但我没有办法做到这一点.

可能吗?

rest ivr voice dtmf twilio

7
推荐指数
1
解决办法
3075
查看次数

如何在Microsoft.Speech中使用DTMFRecognitionEngine类

Microsoft.Speech SDK有一个DTMFRecognitionEngine类,我想试验一下 - 我们需要检测WAV文件中的DTMF音调(我意识到还有其他方法可以做到这一点,但我正在评估所有可能的方法).

关于如何实际使用类的文档并不清楚:它是伴侣类SpeechRecognitionEngine,有很多例子和很好的清晰方法SetInputToWaveFile.DTMFRecognitionEngine没有任何这样的方法.

有人可以提供有关如何在我自己的代码中使用此组件的见解吗?

编辑:似乎没有任何方法可以使用这个类...好吧,真的很多.我正在寻找一个可以让我检测音频文件中DTMF数字的位置和持续时间的库.我看过TapiEx,但他们没有回复电子邮件.如果有人有任何其他建议,他们会感激地收到......

.net c# dtmf

7
推荐指数
1
解决办法
411
查看次数