Autoanswer:传统智慧似乎不正确

时间:2012-08-17 04:08:06

标签: android headset

我一直致力于使用“KeyEvent”方法自动接听电话,很多人似乎都会发誓。

此方法适用于模拟器,但在实际设备上无效

我正在使用的代码如下:

  Intent buttonDown = new Intent(Intent.ACTION_MEDIA_BUTTON);
  buttonDown.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK));
  ctx.sendOrderedBroadcast(buttonDown, "android.permission.CALL_PRIVILEGED");

  Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON);
  buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK));
  ctx.sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED");

  Intent headSetUnPluggedintent = new Intent(Intent.ACTION_HEADSET_PLUG);
  headSetUnPluggedintent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
  headSetUnPluggedintent.putExtra("state", 1); // 0 = unplugged  1 = Headset with microphone 2 = Headset without microphone
  headSetUnPluggedintent.putExtra("name", "Headset");
  // TODO: Should we require a permission?
  ctx.sendOrderedBroadcast(headSetUnPluggedintent, "android.permission.CALL_PRIVILEGED");

在模拟器上会发现答案“按钮”似乎有效。不幸的是,在实际的手机上看起来像正在发送的KeyEvent被完全忽略了。

有没有人找到在Android 2.3上执行此操作的可靠方法。*?

1 个答案:

答案 0 :(得分:0)

您在耳机按钮事件后发送假耳机连接事件。未连接的耳机如何接听电话?首先连接假耳机,然后发送假按钮。这个对我有用。