Если вам нужно только поддерживать OS 4.7+ устройства, то вам не нужно использовать препроцессор. Вы можете программно проверить на сенсорном экране с этим:
boolean isTouch = TouchScreen.isSupported();
Что Rupak предложил в своем ответе не может быть достаточно (просто добавить сенсорный код обработки, который будет игнорироваться для не сенсорных устройств). В вашем случае, если вы хотите поддерживать функцию масштабирования, вам может потребоваться активное обнаружение устройства без касания (с помощью кода выше) и выберите добавить новый зум ButtonField
, который даже не отображается на сенсорных устройствах, которые делают поддерживать жест щепотки. Если вы этого не сделаете, либо устройства без касания не смогут масштабировать, либо сенсорные устройства будут иметь свои экраны, загроможденные ненужной кнопкой.
Но, TouchScreen
API предназначен только для 4.7+. Если вам необходимо запустить тот же код на более старые версии ОС, тоже, этот другой метод может быть использован:
boolean isTouch = (new Canvas(){protected void paint(Graphics graphics){}}).hasPointerEvents();
Моих приложения в основном до сих пор поддерживают 4.5+, которые не могут даже компилировать сенсорного код обработки. Поэтому я обычно полагаюсь на этот макрос препроцессора, чтобы выборочно компилировать другой код.Во-первых, в верхней части файла
//#preprocess
Затем, в любом месте внутри файла:
//#ifndef TOUCH_SCREEN
/*
//#endif
// code only for touch devices:
import net.rim.device.api.ui.TouchEvent;
//#ifndef TOUCH_SCREEN
*/
//#endif
А потом строит, что я буду производить для развертывания сенсорных устройств, добавить флаг TOUCH_SCREEN препроцессора. Если вы не хотите беспокоиться о загрузке различных пакетов приложений для сенсорных и не сенсорных устройств, просто программно обнаруживайте сенсорные экраны с кодом Java (isTouch
) и используйте препроцессор только для удалите код, который не будет компилироваться версии до версии 4.7 ОС.
Примечание: это несколько запутанная логика препроцессора с «двойным отрицательным» не является ошибкой. Это похоже на то, что препроцессоры в интегрированных с BlackBerry IDE (например, JDE, Eclipse, Netbeans) обрабатывают препроцессорную обработку. К сожалению, предварительная обработка не является стандартизированной функцией J2ME, поэтому ее реализация немного шелушащаяся.
Thanx alot Nate, я просто использовал метод isSupported(). Это делает мое приложение гибким для сенсорных и сенсорных устройств. –