Pertanyaan Periksa apakah perangkat Android memiliki tombol perangkat keras tertentu dalam kode


Saya perlu memeriksa apakah perangkat android tertentu memiliki tombol perangkat keras dalam kode. Misalnya hanya beberapa ponsel yang memiliki tombol pencarian. Jadi bagaimana cara memeriksa apakah perangkat memiliki tombol perangkat keras (Cari, kamera, d-pad, dll) atau tidak?


4
2017-09-05 01:07


asal


Jawaban:


Kamu dapat memakai PackageManager.hasSystemFeature().
Contoh:

boolean hasCamera = 
        getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA); 

Anda juga bisa mendapatkan beberapa fitur yang tidak dapat diuji oleh PackageManager Melalui Configuration, mis. DPAD.

Configuration c = getResources().getConfiguration();
if(c.navigation == Configuration.NAVIGATION_DPAD)
      hasDpad = true;

Satu-satunya pengecualian adalah tombol pencarian. Ada pertanyaan di sini beberapa hari yang lalu, bertanya pada dasarnya sama. Saya tidak ingat jawaban apa pun dan saya tidak tahu cara mendeteksi tombol pencarian, karena tidak ada dalam daftar fitur. (Edit: Ini dia, mungkin duplikat utas yang saya sebutkan di sini)


8
2017-09-05 01:18



Berikut ini cara bersih yang bagus untuk memeriksa apakah tombol "Menu" Perangkat Keras ada:

ViewConfiguration.get(context).hasPermanentMenuKey();

Dari: https://stackoverflow.com/a/9481965 Lihat juga: http://developer.android.com/reference/android/view/ViewConfiguration.html#hasPermanentMenuKey ()


4
2018-03-13 08:27



Saya tahu postingan ini sudah berumur lebih dari satu tahun, tetapi masih muncul di pencarian Google (di halaman pertama). Saya pikir, saya akan posting sedikit pembaruan atau saran dengan apa yang saya gunakan dalam kasus seseorang seperti saya sedang mencari hal yang sama.

public boolean onKeyDown(int keyCode, KeyEvent event) { 
           if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { 
               Toast.makeText(this,"VOL Down", Toast.LENGTH_LONG).show();
               return true;
           } else if(keyCode == KeyEvent.KEYCODE_SEARCH){
               Toast.makeText(this,"search", Toast.LENGTH_LONG).show();
               return false;
           }else{
               Toast.makeText(this,"Vol Up", Toast.LENGTH_LONG).show();
               return true;
               //return super.onKeyDown(keyCode, event); 
           }
    }

Saya telah menempatkan sisi onCreate () .. Ini berfungsi dengan baik pada Thunderbolt saya (Rooted menjalankan MikMik GingerGrits)


2
2017-07-12 01:00