2011-10-17 13 views

答えて

6

android.intent.action.VOICE_COMMANDであり、それは活動の意図ではなく、受信側の意図です。

<activity android:name="LongPressActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.VOICE_COMMAND"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
    </intent-filter> 
</activity> 

アクティビティが開始されると問題が発生します。ボイスコマンドアプリケーションで使用されているAPIのほとんどは隠されていますので、フレーミングフープを使用してそれらにアクセスする必要があります。反射を使用するか、this series of articlesを参照してください。

+0

Jelly BeanはGoogle Nowがあなたの活動ではなくその意図をインターセプトしないので、 –

2

長押しの場合よりも、Intent.ACTION_CALL_BUTTONの動作を意味しますか?それは存在しない、Androidは限られた量の標準的なアクションしか提供しておらず、物理的ボタンの長押しは含まれていない。

自分のアクティビティが開いている場合は、アクティビティクラスのonKeyLongPressメソッドをオーバーライドすることもできますが、あなたが探している

@Override 
public boolean onKeyLongPress(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_CALL) { 
     // do your stuff here 
     return true; 
    } 
    return false; 
} 
+0

私に戻ってくれてありがとう。通常、Bluetoothヘッドセットとそのコールボタンを約2秒間押すと、長いビープ音が鳴ります。私はすでに、デバイスのボタンを1回押すのではなく、このアクションを使っていくつかのAndroidプログラムを見たので、これは独自のアクションで定義されていると思った。ダブルプレス私も同様に、通常は自動的に最後の呼び出しをダイヤルビットを使用することができます。 – jjj

+0

実際には、このKeyEvent.KEYCODE_CALLを見て、Bluetoothヘッドセットデバイスのコールボタンを押しても動作するのでしょうか?私はそれが何らかの理由で動作するようにはなっていません... – jjj

+0

Bluetoothヘッドセットが 'Intent.ACTION_CALL'または' Intent.ACTION_DIAL'をトリガーしているかもしれません。おそらく、ボタンがあればブロードキャスト受信機をチェックしてもう一度押す。 –

関連する問題