0

ヘッドフォンボタン「KEYCODE_HEADSETHOOK」をAndroidのプッシュツートークボタンとして使用したい。つまり、押したままにすると何かを実行でき、離すと停止します。ありがとう

ここに私のコードがあります

if (keyCode == KeyEvent.KEYCODE_HEADSETHOOK/*KEYCODE_HEADSETHOOK*/ && event.getAction() == KeyEvent.ACTION_DOWN) {
     Log.e("RAM","Set");
     setPushToTalk(true);
     return true;
     }
    else if (keyCode == KeyEvent.KEYCODE_HEADSETHOOK && event.getRepeatCount() == 0 && (event.getFlags() & KeyEvent.FLAG_LONG_PRESS) == KeyEvent.FLAG_LONG_PRESS) {
        switch (keyCode) {
        case MotionEvent.ACTION_DOWN:
            if(!mService.isConnected()){
                playTone();
                return false ;
            }
            boolean waitFlag = false;
            for (User user : mService.getUserList()) {
                if (user.getChannel().equals(getChannel())) {
                    if (user.talkingState == 1)
                        waitFlag = true;// user);
                    // Log.e("Talking user",user.name+"/"+user.talkingState);
                }
            }
            if (waitFlag){
                sendWaitingMsg();
            }
            else{
                setPushToTalk(true);
            }
            Log.e("headphone btn", "down");
            return true;
        case MotionEvent.ACTION_UP:
            setPushToTalk(false);
            Log.e("headphone btn", "up");
            return true;
        }
4

1 に答える 1

1

http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HEADSETHOOKを見る

単一のフラグのように見えます。ボタンを押すと単一のメッセージしか送信されず、長押ししても安定した入力が生成されません。ボタンを使用して話すことを「トグル」する必要があります。おそらく、フラグがオン/オフに切り替えられた場合に音声検出が機能するようにするか、回避する必要があります。 keyEvent を完全に削除し、ハードウェアのアドレス指定を行いますか?

于 2013-04-02T11:47:25.583 に答える