2012-03-09 10 views
2

私のAndroidアプリケーションを実行している電話機がハードウェアボタンまたは仮想ボタン(Galaxy Nexus)を使用しているかどうかを検出したいと思います。バーチャルボタンの検出方法(Android 4)

この情報を取得する方法はありますか?

答えて

3

APIレベル14以降、ViewConfiguration.hasPermanentMenuKey()を使用して、デバイスに永続的なメニューキーがあるかどうかを検出できます。

一般に、仮想ボタンと物理ボタンは互いに排他的です。したがって、これが役立ちます。例:

public class MyActivity extends Activity { 

    // ... 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     boolean hasPermanentMenuKey = ViewConfiguration.get(this).hasPermanentMenuKey(); 
     boolean hasVirtualKeys = !hasPermanentMenuKey; 
     String message = hasVirtualKeys ? "This device has virtual menu keys" : "This device has physical keys"; 
     Toast.makeText(this, message, Toast.LENGTH_LONG).show(); 
    } 
    // ... 

} 

WARNING:これはあなたを助けにはなりませんここでいくつかの例があります。たとえば、メーカーが物理キーと一緒に仮想キーを使用することを決めたとします。この方法はあなたを助けません。もう1つのケースは、電話機に仮想キーがなく、物理的なメニューキー(Samsung S5など)がない場合です。

+1

'ViewConfiguration.hasPermanentMenuKey()'はSamsung S5ではfalseを返しますが、電話機には仮想キーがありません。私はこれがもう仮想キーをチェックする適切な方法だとは思わない。 – tomrozb

+0

あなたは正しいです。 S5には物理的なメニューキーはありませんが、仮想ボタンもありませんので、 'boolean hasVirtualKeys =!hasPermanentMenuKey;'はもはや有効ではありません。私はこれに関する警告で私の答えを更新しました。 –

関連する問題