2016-08-25 10 views
0

私は、押しているハードウェアボタンを傍受してRESTを呼び出すAndroidアプリを開発しています。 私が傍受しなければならないボタンはPTT(Push to Talk)ボタンなので、電源ボタンや音量ボタンなどの通常のボタンではありません。Android - ハードウェアを傍受するKeyPress(PTTボタン)アプリがバックグラウンドのとき

アプリケーションがフォアグラウンドで実行されるときは、onKeyDown(int keyCode、KeyEventイベント)メソッドを使用します。 PTTボタン、識別子として、数27を有しており、この方法内側Iは、次のコード行を書いた:

場合(キーコード== 27){//私はPTTボタン押下}

をすべてこれは完全に動作します。

私はPTTボタンを押したときに、を傍受します。

私はしかし、これらはあなたが圧力を見つけることができませんその中に限られた目的の操作(例えばintent.action.SCREEN_OFF等、通常のアクション)、傍受することができ、IntentFilterおよびサービスの、BroadcastReceiverの承知していますPTTボタンの

アプリケーションがバックグラウンドのときにPTTボタンを傍受する方法はありますか?

ありがとうございました

+1

AndroidにはPTTボタンがありません。これを実装する方法をデバイスメーカーに尋ねる必要があります。 'onKeyDown()'の観点からは、 'KEYCODE_CAMERA'を使用しているようです。*多分* [' ACTION_CAMERA_BUTTON'](https://developer.android.com/reference/android/content/Intent.html#ACTION_CAMERA_BUTTON)働くでしょう。 – CommonsWare

+0

おかげで、私は想像し、成功することなくあらゆる方法で試しました。私はデバイスの製造元に連絡しようとします。 –

答えて

2

解決方法は使用しているデバイスによって大きく異なります。専用のPTTボタンを備えた電話機をお持ちの場合、携帯電話のメーカーは、PTTのダウンイベントやアップイベントを傍受するためのアプリ開発者にインテントを提供していますが、詳細についてはメーカーにお問い合わせください。

例えば、京セラ、ソニン、カシオから電話が利用可能なインテントを持っている、とあなたは、単に京セラの携帯電話のために、このようなあなたのAndroidManifest.xml内の受信宣言を、置く必要があると思います:

<receiver android:exported="true" android:name="com.myapp.receiver.KeyReceiverKyocera"> 
     <intent-filter android:priority="9999999"> 
      <action android:name="com.kodiak.intent.action.PTT_BUTTON" /> 
      <action android:name="com.kyocera.android.intent.action.PTT_BUTTON" /> 
     </intent-filter> 
    </receiver> 
その後

、アップとダウンの意図を受けて、単純なBroadcastReceiverクラス:

public class KeyReceiverKyocera extends BroadcastReceiver 
{ 
    private static boolean keyDown = false; 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     String action = intent.getAction(); 

     if (keyDown) 
      processPTTDown(); 
     else 
      processPTTUp(); 

     keyDown = !keyDown; 
    } 
} 

・ホープ、このことができます、

ショーン

関連する問題