1

我一直在研究一种使用“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.* 上执行此操作的可靠方法?

4

1 回答 1

0

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

于 2014-02-09T16:54:15.263 回答