2011-08-30 72 views
3

比方說,我想在我的應用中使用縮放圖像查看 是否可以在支持多點觸控(API 7+)的手機上添加多點觸控事件監聽器,而在舊手機上顯示縮放按鈕?在支持的設備上的Android多點觸摸

這可以在單個版本的應用程序中完成,還是需要多個應用程序版本和多個APK?

+0

是的,但你必須使用反射 – ingsaurabh

回答

9

你不會在這種情況下,需要多個APK。

您可以在代碼檢查多點觸控的可用性:

if (Integer.parseInt(Build.VERSION.SDK) >= 7) { 
    PackageManager pm = context.getPackageManager(); 
    boolean hasMultitouch = 
     pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH); 
    if (hasMultitouch) { 
     // set multitouch event listeners 
    } else { 
     // set zoom buttons 
    } 
} else { 
    // set zoom buttons 
} 

你可以從你的活動(服​​務)PackageManager沒有使用contextPackageManager pm = getPackageManager();

有三種類型的多點觸控的,你可以檢查。

Upd:您必須在多點觸控可用性檢查之前檢查API版本。 FEATURE_TOUCHSCREEN_MULTITOUCH僅適用於API 7.我更新了代碼示例。

+0

當我找到多點觸控可用時,我會做什麼?當我在代碼中使用多點觸控API 7方法和類時,應用程序不會在API 4上崩潰嗎? – Axarydax

+0

它當然會崩潰,但它不需要在API 4上使用多點觸控API 7方法。您已經提出瞭解決方案:如果不支持多點觸控,請不要使用它並顯示縮放按鈕。 –

+0

,但代碼將使用API​​ 7方法進行編譯,API 4設備上會發生什麼?他們不會拒絕安裝該應用程序嗎? – Axarydax

0

您可以在應用程序啓動時查看您的api級別,並在此信息上設置正確的偵聽器和按鈕。

可能this site是有用的

您例如:

if(Integer.parseInt(Build.VERSION.SDK) >= 7) 
    { 
     //add multi touch listeners 
    } 
    else 
    { 
     // add zoom buttons 
    } 
+0

我認爲,只是檢查API級別是不夠的。有API 7+的設備,但沒有多點觸控。 –

相關問題