简体   繁体   English

查找是否连接了外部 usb 或蓝牙键盘 Android

[英]Finding if external usb or bluetooth keyboard attached in Android

Can anyone please tell me if there is any way we can find out if a bluetooth QWERTY keyboard is attached to android device.谁能告诉我是否有任何方法可以查明蓝牙 QWERTY 键盘是否连接到 android 设备。

I tried working with getResources().getConfiguration.keyboard , but it always gives me the same value whether key board is attached or not.我尝试使用getResources().getConfiguration.keyboard ,但无论是否连接键盘,它总是给我相同的值。

Thanks谢谢

One way to do this is adding android:configChanges="keyboard" to the activity in your AndroidManifest.xml file. 一种方法是将android:configChanges="keyboard"到AndroidManifest.xml文件中的活动。

With this you can override onConfigurationChanged which will be called whenever a keyboard is plugged in or plugged out 有了这个,您可以覆盖onConfigurationChanged ,只要插入或拔出键盘就会调用它

 @Override
 public void onConfigurationChanged(Configuration newConfig) 
 {
   if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
        //A hardware keyboard is being connected
   }  
   else if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES)
       //A hardware keyboard is being disconnected
   }

 }

An improvement to @LeonLucardie's answer , in Kotlin.在 Kotlin 中对@LeonLucardie 的回答进行了改进。

Manifest (as per @MobileMon's comment):清单(根据@MobileMon 的评论):

<activity
    android:configChanges="keyboard|keyboardHidden"

Activity:活动:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    when (resources.configuration.hardKeyboardHidden) {
        HARDKEYBOARDHIDDEN_NO -> Log.d(TAG, "A hardware keyboard is connected.")
        HARDKEYBOARDHIDDEN_YES -> Log.d(TAG, "A hardware keyboard is disconnected.")
    }
}

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)

    when (newConfig.hardKeyboardHidden) {
        HARDKEYBOARDHIDDEN_NO -> Log.d(TAG, "A hardware keyboard is being connected.")
        HARDKEYBOARDHIDDEN_YES -> Log.d(TAG, "A hardware keyboard is being disconnected.")
    }
}

Note: calling super.onConfigurationChanged(newConfig) seems to be mandatory.注意:调用super.onConfigurationChanged(newConfig)似乎是强制性的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM