前一篇文章寫了怎樣在狀態列添加虛擬按鍵http://blog.csdn.net/dclchj/article/details/7091031
但是有一個問題:當拉出expand的通知欄時,按鈕的響應非常慢。當時的解決辦法是將按鈕給屏蔽掉。不過,現在網上看到一篇文章,可以解決這個問題。思路是建立一個線程來處理按鍵訊息的發送。
文章轉自:http://blog.csdn.net/qjclinux/article/details/6665323
至於怎麼添加大家就去網上逛逛吧,多的不得了
具體的修改就是修改 IntentReceiver了
private final void updateIconKeyAction(Intent intent) { int keycode = intent.getIntExtra("keycode",-1); if (keycode != -1) sendKey(keycode); 。。。。 }private void sendKey(final int keyCode) {Thread t = new Thread(){ public void run() {try {Thread.sleep(100);} catch (InterruptedException e1) {e1.printStackTrace();}long now = SystemClock.uptimeMillis();long n = System.currentTimeMillis();try {KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, keyCode, 0);KeyEvent up = new KeyEvent(now, now, KeyEvent.ACTION_UP, keyCode, 0);IWindowManager wm = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));wm.injectKeyEvent(down, false);wm.injectKeyEvent(up, false);} catch (RemoteException e) {Log.i("Input", "DeadOjbectException");}}};t.start();}
註:稍微改了一點原文章,其實是方便基礎不好的朋友編程。主要代碼是一樣的。