我正在研究包括縮放功能的黑莓應用程序,但此功能適用於觸摸屏設備。我的應用程序也可以在曲線類型的設備上工作。檢測黑莓觸摸屏?
請讓我知道如果「我可以通過編程方式檢測設備是否觸摸屏」,這樣我可以使我的應用程序對這兩種類型都很靈活。
我正在研究包括縮放功能的黑莓應用程序,但此功能適用於觸摸屏設備。我的應用程序也可以在曲線類型的設備上工作。檢測黑莓觸摸屏?
請讓我知道如果「我可以通過編程方式檢測設備是否觸摸屏」,這樣我可以使我的應用程序對這兩種類型都很靈活。
如果你只需要支持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的功能,所以它的實現是一個小片狀。
從BlackBerry API 4.7.0開始,增加了觸摸支持。檢查TouchEvent課程的文檔。
因此,如果您正在爲運行於4.7.0或更高版本的設備構建應用程序,則不需要執行任何操作。您可以編寫觸摸事件相關任務,並且該應用程序可以在觸摸和非觸摸設備上運行。對於非觸摸設備,與觸摸事件相關的代碼將不會執行。
但是,如果您需要支持那些運行於4.7.0以下的舊設備,則需要使用預處理器指令。
嘗試以下鏈接,使用你的應用程序預處理器指令:
Coding for Multiple Blackberry Devices - Using Preprocessor Directives in Eclipse
其他相關鏈接:
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?
你好Rupak,感謝名單了很多這樣很好的解釋。這對我來說是非常有用的知識庫。我的應用程序中尚未使用任何預處理器類型代碼。但在這個應用程序中,我正在使用5.0 + OS,因爲我也使用本地數據庫。所以我只用了TouchScreen類的isSupported()。 Agains thanxx的幫助。:) –
感謝名單了很多內特,我只是用則isSupported()方法。這使得我的應用程序對於觸摸和非觸摸設備都很靈活。 –