2016-05-15 15 views
1

Androidは、(ヘッドセットケーブル内の)物理メディアボタンを論理アクション(NEXT、STOP、SPEECH QUERYなど)に変換します。Androidはどこでメディアボタンを解釈しますか?

この割り当てを変更する方法はありますか?つまり、他のアクションを作成する方法はありますか?

NB:MediaButtonReceiverをインストールしようとしました。しかし、それは解釈されたキーしか見ることができません。だから私はキーが押された後、キーが早くリリースされてからスピーチクエリーが起動されないようになっています。

更新:アプリケーションがフォアグラウンドになっている限り、必要なrawキーイベントがonDispatchKeyEventに表示されます。しかし、ロック画面がアクティブなときにどうやって取得するのですか?

アプリがバックグラウンドのとき(しかし、キーが解放された後でのみ)MediaButtonReceiverが呼び出されます。

答えて

1

あなたのアプリがオーディオを再生する前に、使用するストリームのオーディオフォーカスを保持する必要があります。これは、リクエストが成功した場合にAUDIOFOCUS_REQUEST_GRANTEDを返すrequestAudioFocus()の呼び出しによって行われます。

使用するストリームと、一時的または永続的なオーディオフォーカスが必要かどうかを指定する必要があります。

// Request audio focus for playback 
int result = am.requestAudioFocus(afChangeListener, 
         // Use the music stream. 
         AudioManager.STREAM_MUSIC, 
         // Request permanent focus. 
         AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK); 

if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { 
// Start playback. 
} 

informationを確認してください。

APPでリアルタイムイベントを使用するには、RTPを使用します。オンデマンドまたはインタラクティブデータストリーミングを管理するためのRTP(Real-time Transport Protocol)、allowingアプリケーション用のAPIを提供します。

+0

問題は同じです。短いキーの押下のみが表示されます。これは、ボタンがすでにリリースされているときに(キーリリースとともに)送信されます。それらはタイムスタンプを含んでいますが、私はリアルタイムでイベントを必要とします。 –

+0

RTP APIがどのようにメディアボタンに新しいアクセス権を与えているのか分かりません。例がありますか? –

関連する問題