2011-05-13 69 views
8

我想将一些数据传递给我打来的电话。 有什么办法可以做到这一点? 只要我能识别它并触发特定的操作,我并不在意数据的类型(单个位就够了), 。Android:您可以通过电话来发送/接收数据吗?

发送代码:

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"); 
    } 
} 
+0

你的代码的结果是什么?你打来的电话是否收到了?它在日志中说什么? – exception01 2011-05-13 09:11:16

+0

@exception没有例外,但结果是错误的 - 这是有道理的,因为android总是发送一些额外的东西,如phonenumber(如果我没有弄错) – Andreas 2011-05-13 14:04:19

回答

7

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

如果你想发送数据到另一个电话设备,你可以发送触摸音。这些都是按键按下的声音(例如,如果你打电话给银行,他们要求你按一个客户服务,两个电话银行等,这些按键发送一个稍微不同的音调,沿着接收机监管的连接作为“one”和“two”的触摸按键,所以可以执行一些动作)。

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

它们通常也被称为DTMF音调。

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

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

我不确定如何访问接收设备上的音频流,因此您必须亲自查看此信息,才能掌握流并收听DTMF音调。

祝你好运,希望这有助于!

+0

谢谢,这应该是我正在寻找。无论如何在我的听众中检测到这些DTMF音调?这两款设备都是Android,顺便说一句。 – Andreas 2011-05-13 14:03:27

+0

@ graverobber2不,目前没有办法在Android上收听正在发送的DTMF音。事实上,向开发者开放的唯一与DTMF相关的功能就是将音调附加到意图上,正如biddulph.r发布在他的答案中。 [在Android上查看此功能请求](http://code.google.com/p/android/issues/detail?id=1428) – 2011-07-05 10:07:47

+1

因此,我觉得有必要接听电话,通信。对 ?在此之前,你将如何发送?只是确认。 – 2016-11-30 12:59:38

相关问题