android / java desktop:根据目标决定使用哪个类

时间:2012-11-19 20:45:41

标签: java android image

我有3个项目:desktop_starterandroid_starterplatform。两个入门项目都引用platform项目,而platform项目应该是(99%)平台无关的,并且几乎包含所有代码。

原因是我希望能够在桌面上运行Android应用程序,而无需使用模拟器。

但至少在一个地方,我需要在platform中调用特定于平台的代码。具体来说,我需要在桌面上使用javax.ImageIOandroid.graphics.Bitmap逐像素地读取图片。

由于Java AFAIK中没有预处理器或类似结构,我有哪些选择?

  • 我可以将图像阅读器作为对象发送到platform并使用反射我猜,但那很脏。
  • 我找到一个内置的图像阅读器,可以在桌面java和android上运行,有什么想法吗?
  • JNI并使用libpng或类似的东西我觉得,似乎应该有一个更简单的方法。

1 个答案:

答案 0 :(得分:3)

您可以简单地在定义所需方法的接口上编写平台代码,并从特定于平台的项目中传递此接口的特定于平台的实现。

例如,如果你需要的是一个包含图像所有像素的int数组(只是一个例子),接口将是:

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

你将有两个接口实现:一个在桌面项目内部使用ImageIO,另一个在android项目内部使用Bitmap。其中一个类的实例将传递给与平台无关的代码。