2

Android 3.1および4.0でアプリスイッチキーとホームキーをキャプチャしようとしていますが、機能していないようです。

これが私がやっていることです

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
   if (KeyCode == KeyEvent.KEYCODE.KEYCODE_APP_SWITCH && event.getRepeatCount() == 0)
    { 
        Log.d ("onkeydown","app switch key");
    }
   else if (KeyCode == KeyEvent.KEYCODE.KEYCODE_HOME && event.getRepeatCount() == 0)
    { 
        Log.d ("onkeydown","home key");
    }
    //EDIT:
    return super.onKeyDown(keyCode, event);
}

log.d ステートメントが出力されません。これら2つのキーをキャプチャすることは可能ですか?

正しい return ステートメントでコードを更新

4

3 に答える 3

2

うーん。

いいえ、できません。

public static final int KEYCODE_HOME

以来: API レベル 1

キーコード定数:ホームキー。

このキーはフレームワークによって処理され、アプリケーションに配信されることはありません。

http://developer.android.com/reference/android/view/KeyEvent.html

于 2011-12-20T18:06:56.710 に答える
1

リフレクションを使用して実現できます。

android.os.ServiceManageraidlを持つクラスの下にあり、メソッドcom.android.internal.statusbar.IStatusBarServiceが含まれていますtoggleRecentApps

また、ここでこの方法を試してください

于 2015-08-07T07:49:39.603 に答える
0

super.onKeyDown (keyCode, event)がありません。これを試してみるべきだと思います:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
super.onKeyDown(keyCode, event);

   if (KeyCode == KeyEvent.KEYCODE.KEYCODE_APP_SWITCH && event.getRepeatCount() == 0)
    { 
        Log.d ("onkeydown","app switch key");
    }
   else if (KeyCode == KeyEvent.KEYCODE.KEYCODE_HOME && event.getRepeatCount() == 0)
    { 
        Log.d ("onkeydown","home key");
    }
    return true;
}

switch ステートメントを使用して同じことを行います。

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    super.onKeyDown(keyCode, event);
        switch(keyCode)
        {
            case KeyEvent.KEYCODE_CAMERA:
             Toast.makeText(ListViewActivity.this, "Pressed Camera Button", Toast.LENGTH_SHORT).show();
                return true;
            case KeyEvent.KEYCODE_1:
             Toast.makeText(ListViewActivity.this, "Pressed 1", Toast.LENGTH_SHORT).show();
                return true;
            case KeyEvent.KEYCODE_HOME:
             Toast.makeText(ListViewActivity.this, "Pressed Home Button", Toast.LENGTH_SHORT).show();
                return true;

            case KeyEvent.KEYCODE_BACK:
             Toast.makeText(ListViewActivity.this, "Pressed Back Button", Toast.LENGTH_SHORT).show();
                finish();
                return true;
        }

        return false;
    }
于 2011-12-20T18:13:32.840 に答える