2017-04-07 27 views
-1

私は呼び出し側のアプリケーションを開発中です。だから私は選択する必要があります/ハンズフリーコールをBluetoothデバイスからも。しかし、私はちょうどブルートゥースヘッドセットからキープレスイベントを取得することはできません。 私はブロードキャストとオーディオマネージャを試していますが、再生/一時停止、前と次のボタンのコールバックだけを取得しています。アンドロイドでBluetoothヘッドセット通話ボタンを押すと検出

public class MediaButtonIntentReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { 
      KeyEvent event = (KeyEvent) intent .getParcelableExtra(Intent.EXTRA_KEY_EVENT); 

      if (event == null) { 
       return; 
      } 

      if (event.getAction() == KeyEvent.ACTION_DOWN) { 
       //context.sendBroadcast(new Intent(Intents.ACTION_PLAYER_PAUSE)); 
      } 
     } 
    } 
} 

menifestは

<receiver android:name=".net.MediaButtonIntentReceiver"> 
<intent-filter> 
<action android:name="android.intent.action.MEDIA_BUTTON" /> 
</intent-filter> 
</receiver> 

である私は私の活動はので、私はonKeyDownメソッドを使用しており、活動のdispatchKeyEvent方法があまりにもなく、何も動いていないようにみえ生きているときにのみ、イベントを取得する必要があります。それは私に同じ結果と前を与えてくれます。 システムの電話アプリがダイヤラを開始するこのイベントを取得する原因があるに違いありません。 Pls私にそれを行うにはいくつかの便利な方法をお勧めします。プレイを使用https://developer.android.com/reference/android/view/KeyEvent.html

(有線またはしない)、ほとんどのヘッドセットのために取り扱い呼び出すことに注意してください:

答えて

0

私はあなたがキーイベントの完全なリストはここで見つけることができKeyEvent.KEYCODE_CALLKeyEvent.KEYCODE_ENDCALL

をリッスンする必要があると思います/ポーズボタンも電話を終了する。

EDIT:

があなたのdispatchKeyEventでこれを試してみてください:

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    if (event.getKeyCode() == KeyEvent.KEYCODE_CALL) { 
     Toast.makeText(this, "CALLING!", Toast.LENGTH_LONG).show(); 
     return true; 
    } 
    return super.dispatchKeyEvent(event); 
} 

静的KEYCODE_ {} SOMEKEY整数を扱うとき、あなたが代わりにevent.getAction();event.getKeyCode();を使用する必要があることに注意してください。

+0

返信用のThxは、ドキュメントを読んだ後にそれを行う正しい方法のようです。しかし、私はdispatchKeyEventでこのイベントコールバックを取得していません。これらの2つのイベントをキャッチする方法を教えてください。 – ADM

+0

dispatchKeyEventでイベントを取得できません。このコードを試しましたか?私はそれが動作していないことを確認した – ADM

+0

@ ADMはい、私はアンドロイド7.1を使用して、Androidエミュレータ上の新しいプロジェクトでこれを試しました。 'adb shell input keyevent 5 'を使って呼び出しボタンをシミュレートしました。この場合の5は、コールボタンのKeyCodeです。 –

関連する問題