2012-11-19 48 views
0

我有3個項目:desktop_starter,android_starterplatform。這兩個入門項目都引用platform項目,而platform項目應該是(99%)獨立於平臺的,並且包含幾乎所有的代碼。android/java桌面:根據目標決定使用哪個類

原因是,我希望能夠在桌面上運行android應用程序而無需使用模擬器。

但至少在一個地方,我需要撥打platform中的平臺特定代碼。具體而言,我需要在桌面上使用javax.ImageIOandroid.graphics.Bitmap來逐像素地讀取圖像。

由於java AFAIK中沒有預處理器或類似的構造,我的選擇是什麼?

  • 我可以在圖像閱讀器發送的,目的在於platform和使用反射我想,但那是骯髒的。
  • 我發現一個內置的圖像閱讀器,可以在桌面Java和Android,任何想法?
  • JNI和使用libpng或類似我猜,似乎應該有一個更簡單的方法。

回答

3

您可以簡單地在定義您需要的方法的接口上編寫平臺代碼,並從平臺特定的項目中傳遞此接口的平臺特定實現。

例如,如果你需要的是包含圖像(只是一個例子)的所有像素的int數組,該接口將是:

public interface ImageReader { 
    int[] getImagePixels(InputStream in) throws IOException; 
} 

而且你將有接口的兩個實現:一個是在桌面項目中內部使用ImageIO,另一個是在android項目內部使用Bitmap。其中一個類的實例將被傳遞給獨立於平臺的代碼。

+0

hm我可以告訴我離開Java的時間太久了,我自動考慮如何用預處理器解決它:)謝謝! – Rolle