【问题标题】:Android: Can you send/receive data along a phonecall?Android:您可以通过电话发送/接收数据吗?
【发布时间】:2011-05-13 09:03:44
【问题描述】:

我正在尝试将一些数据传递给我正在呼叫的电话。 有什么办法可以做到这一点吗? 我并不真正关心数据的类型(一位就足够了), 只要我能识别它并触发特定的动作。

发送代码:

Intent call = new Intent();
call.setAction(Intent.ACTION_CALL);
call.setData(Uri.parse("tel:" + contact.getNumber()));
call.putExtra("Boolean", true);
startActivity(call);

接收代码:

public void onReceive(Context context, Intent intent) {
    Bundle extras = intent.getExtras();
    if (extras != null) {
        if (extras.getBoolean("Boolean")){
            Log.d("BOOL", "true");
        } else {
                            Log.d("BOOL", "false");
    }else {
        Log.d("BOOL", "nothing");
    }
}

【问题讨论】:

  • 你的代码的结果是什么?您的电话是否收到?日志中的内容是什么?
  • @exception 没有例外,但结果是假的——这是有道理的,因为 android 总是在 extra 中发送一些东西,比如 phonenumber(如果我没记错的话)

标签: android phone-call


【解决方案1】:

你在那里做的事情是不可能的。当您向另一台设备拨打电话时,它不一定是您正在呼叫的 Android 设备。您发送到呼叫意图的布尔值正在由该意图读取,而不是发送到呼叫中的其他设备。

如果您想向其他电话设备发送数据,您可以发送向上按键音。这些是按键发出的声音(例如,如果您打电话给银行,他们要求您按一个用于客户服务,两个用于电话银行等,这些按键会沿着接收器重新定位的连接发出略有不同的音调作为“一”和“二”的触摸按键,因此可以执行一些操作)。

您需要向电话发送按键音,并在另一端处理接收按键音。正确的实现将允许两部Android手机进行通信,就像发送数据一样。

它们通常也称为 DTMF 音调。

Intent mIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber + ";" + dtmfSequence));

上面的代码将通过电话发送 DTMF 音。

我不确定如何访问接收设备上的音频流,因此您必须自己查看,以获取流并收听 DTMF 音。

祝你好运,希望这会有所帮助!

【讨论】:

  • 谢谢,这应该是我要找的。有没有办法在我的听众中检测到那些 DTMF 音?顺便说一句,这两款设备都是 Android 设备。
  • @graverobber2 不,Android 目前无法收听发送的 DTMF 音调。事实上,唯一对开发人员开放的与 DTMF 相关的功能是将音调附加到意图中,正如 biddulph.r 在他的回答中所发布的那样。 See this feature request on Android.
  • 所以,我觉得有必要接听电话,然后只有它会通信。正确的 ?在此之前你会如何发送?只是确认。
  • @biddulph.r 能否请您提示一下,在通话期间如何发送 DTMF 音?另外,请您提示如何将“一个”(或任何其他拨号符号)翻译成 DTMF 音调?
  • 您只需要在 ; 之后添加音调特点。一个将对应于数字 1
猜你喜欢
  • 2011-07-06
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多