如何检测Droid Pro上的FIXED键盘?

时间:2010-11-30 22:59:53

标签: android

我使用getResources()。getConfiguration()。hardKeyboardHidden来检测设备是否打开了滑动键盘抽屉(如G1)。

现在我有一个Droid Pro,它总是返回1,所以我的应用认为它有一个滑块打开。

有没有办法告诉设备有键盘,并且它总是打开?

TIA

2 个答案:

答案 0 :(得分:2)

我在CM,电话应用程序中遇到了类似的问题。

迄今为止,手机应用的行为如下:

  • 如果键盘处于打开状态,即使在通话过程中屏幕也会保持开启状态。接近传感器不会用于查询设备是否在听到:

    mIsHardKeyboardOpen为true导致screenOnImimly也被设置为true:

               boolean screenOnImmediately = (isHeadsetPlugged()
                        || PhoneUtils.isSpeakerOn(this)
                        || ((mBtHandsfree != null) && mBtHandsfree.isAudioOn())
                        || mIsHardKeyboardOpen);
    

对于固定物理键盘,它始终打开(不滑动,处于打开位置)。

如果我保留实际代码,手机应用程序将永远不会使用接近传感器关闭屏幕。

如果没有办法猜测键盘是固定还是滑动,我将定义一个新的系统属性ro.product.has_fixed_keyboard,并在我的设备中将其设置为1,然后更改Phone应用程序的代码以绕过如果ro.product.has_fixed_keyboard为1,则打开KeyboardOpen。​​

EDIT(11/23/2012):这是实现,合并到CM7: http://review.cyanogenmod.org/#/c/11926/

答案 1 :(得分:0)

您给出的结果是准确的,所以我认为它给你的结果没有问题。

让您的应用程序监听配置更改,如果它从未收到键盘隐藏状态,则假设它始终处于打开状态。

如果设备是滑块并且键盘处于暴露状态且设备始终显示键盘,那么您的应用程序应该做出同样的反应,因此我不确定您要完成什么。

如果您确实需要判断键盘是否始终打开,只需添加代码以确定设备是否具有始终显示的键盘,只需识别使用的设备即可。如果您想支持任何硬件始终显示键盘的设备,那么您可能会懒惰并询问用户并保存结果。或者,当您发现更多符合此条件的设备时,您可以继续更新您的应用。