Je suis confronté à un problème similaire, dans CM, application de téléphone.
À ce jour, l'application de téléphone se comporte comme ça:
Si le clavier est ouvert, l'écran reste allumé même pendant un appel. Capteur de proximité ne sera pas utilisé pour demander si l'appareil est à l'entendre ou non:
mIsHardKeyboardOpen être vrai conduit à screenOnImmediately étant définie sur true aussi:
boolean screenOnImmediately = (isHeadsetPlugged()
|| PhoneUtils.isSpeakerOn(this)
|| ((mBtHandsfree != null) && mBtHandsfree.isAudioOn())
|| mIsHardKeyboardOpen);
Dans le cas d'un clavier physique fixe, il est toujours ouvert (pas glissant, et en position ouverte).
Si je conserve le code actuel, l'application Téléphone ne sera jamais hors de l'écran en utilisant le capteur de proximité.
S'il n'y a aucun moyen de deviner si le clavier est fixe ou glissant, je vais définir une nouvelle propriété système ro.product.has_fixed_keyboard, et la définir sur 1 dans mon appareil, puis changer le code de l'application Téléphone pour contourner le KeyboardOpen vérifier en cas ro.product.has_fixed_keyboard est 1.
EDIT (23/11/2012): voici la mise en œuvre, fusionné CM7: http://review.cyanogenmod.org/#/c/11926/
Merci beaucoup pour répondre. Je suis d'accord que l'application devrait se comporter de la même manière. C'est ce qu'il fait, et c'est le problème - je suppose que si le clavier est ouvert, l'appareil sera en paysage, donc je l'ai formé. Mais sur le Droid Pro le clavier est ouvert, mais l'appareil est en portrait ... –
J'ai adopté mon code pour ne pas forcer le paysage. –
Espérons qu'un jour ils vont ajouter quelque chose comme KEYBOARD_NONE, KEYBOARD_FIXED, KEYBOARD_POTRAIT et KEYBOARD_LANDSCAPE et vous permettent d'interroger cela. – ddcruver