2012-08-17 224 views
1

我一直在努力使用「KeyEvent」方法自動應答電話,這種方法似乎有如此多的人似乎發誓。Autoanswer:傳統智慧似乎不正確

此方法在模擬器上工作,但不工作在實際設備上。

我使用的代碼提供如下:

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上的這個動作。

回答

0

您在耳機按鈕事件後發送假耳機連接事件。未連接的耳機如何接聽電話?首先連接假耳機,然後發送假按鈕按下。這個對我有用。