2012-05-26 1 views
1

Je travaille sur une application Blackberry qui inclut la fonctionnalité de pincement Zoom, mais cette fonctionnalité fonctionne sur les appareils à écran tactile. Mon application fonctionnera également sur le type de courbe des appareils. S'il vous plaît laissez-moi savoir si "je peux détecter par programme si l'appareil est tactile ou pas" afin que je puisse rendre mon application flexible pour les deux types.Détecter un écran tactile dans Blackberry?

Répondre

2

Si vous avez seulement besoin de soutenir OS 4.7+ périphériques, vous n'avez pas besoin d'utiliser le préprocesseur. Vous pouvez tester pour programme l'écran tactile avec ceci:

boolean isTouch = TouchScreen.isSupported(); 

Que Rupak a suggéré dans sa réponse ne peut être assez (juste en ajoutant toucher le code de gestion, qui sera ignoré pour les appareils non tactiles). Dans votre cas, si vous souhaitez prendre en charge une fonction de zoom, vous devrez peut-être détecter activement un périphérique non tactile (avec le code ci-dessus) et choisir d'ajouter un nouveau zoom ButtonField, qui n'est même pas visible sur les périphériques tactiles. soutenir le geste de pincement. Si vous ne le faites pas, les appareils non tactiles ne pourront pas effectuer de zoom ou les appareils tactiles seront encombrés d'un bouton inutile.

Mais, l'API TouchScreen est seulement pour 4.7+. Si vous devez exécuter le même code sur les anciennes versions OS, aussi, cette autre méthode peut être utilisée:

boolean isTouch = (new Canvas(){protected void paint(Graphics graphics){}}).hasPointerEvents(); 

Mes applications pour la plupart ne supportent toujours 4.5+, qui ne peut même compiler toucher code de gestion. Donc, je me base normalement sur ce type de macro de préprocesseur pour compiler sélectivement du code différent.Tout d'abord, en haut du fichier

//#preprocess 

Puis, partout dans le fichier:

//#ifndef TOUCH_SCREEN 
/* 
//#endif 

// code only for touch devices: 
import net.rim.device.api.ui.TouchEvent; 

//#ifndef TOUCH_SCREEN 
*/ 
//#endif 

Et puis pour builds que je produirai pour le déploiement d'appareils à écran tactile, ajouter le drapeau touch_screen préprocesseur. Si vous ne voulez pas vous soucier de télécharger différents paquets d'applications pour les périphériques tactiles ou non tactiles, il suffit de détecter par programme les écrans tactiles avec le code Java (isTouch) et d'utiliser le préprocesseur juste pour supprimer le code qui ne sera pas compilé sur versions antérieures au système d'exploitation 4.7.

Remarque: cette logique de préprocesseur "double négatif" quelque peu confuse est pas une erreur. C'est comme ça de prendre en compte la manière légèrement différente dont les préprocesseurs dans les environnements IDE compatibles BlackBerry (par exemple JDE, Eclipse, Netbeans) gèrent le prétraitement. Malheureusement, le prétraitement n'est pas une fonctionnalité J2ME standardisée, donc sa mise en œuvre est un peu floue.

+0

Thanx alot Nate, je viens d'utiliser la méthode isSupported(). Cela rend mon application flexible pour les appareils tactiles et non tactiles. –

3

Le support tactile a été ajouté depuis BlackBerry API 4.7.0. Vérifiez la documentation de la classe TouchEvent. Par conséquent, si vous développez une application pour les périphériques fonctionnant sur la version 4.7.0 ou ultérieure, vous n'avez rien à faire. Vous pouvez coder les tâches liées aux événements tactiles et l'application fonctionnera sur les appareils tactiles et non tactiles. Pour les périphériques non tactiles, le code associé à l'événement tactile ne sera pas exécuté.

Mais si vous avez besoin de prendre en charge des périphériques plus anciens fonctionnant sous 4.7.0, vous devez utiliser des directives de préprocesseur.

Essayez de suivre le lien pour l'utilisation des directives de préprocesseur sur votre application:

Coding for Multiple Blackberry Devices - Using Preprocessor Directives in Eclipse

Autres liens connexes:

Create preprocessor directives for a workspace

Specifying preprocessor directives

Preprocessor directives supported by the RIM compiler

Using preprocessor directives in BlackBerry JDE plugin for eclipse?

How To - Use the preprocessor in BlackBerry JDE

+0

Bonjour Rupak, merci beaucoup pour une si bonne explication. C'est très utile pour moi en tant que base de connaissances. Je n'avais encore utilisé aucun code de type préprocesseur dans mes applications. mais ici, dans cette application, je travaille sur 5.0 + OS car j'utilise aussi la base de données locale. Donc je viens d'utiliser isSupported() de la classe TouchScreen. Agains thanxx pour l'aide. :) –