【问题标题】:Can I call a C program that generates an image from within Java on Android?我可以在 Android 上调用从 Java 中生成图像的 C 程序吗?
【发布时间】:2014-02-25 02:23:22
【问题描述】:

我有一个程序的 C 源代码,该程序根据用户在 shell 中提供的参数生成图像。它接受参数,然后生成位图图像并将其保存到本地磁盘。我想修改它,以便我可以从 Java 调用图像生成函数,并以某种方式访问​​生成的 bmp 文件。

如何访问生成的图像文件? C程序可以保存到某种android本地磁盘吗?我可以将图像文件放入内存中的 Java 对象吗?

【问题讨论】:

  • 是的,android 有一个文件系统,请参阅开发者文档。

标签: java android c java-native-interface


【解决方案1】:

您可以在 Android 上使用此类运行程序。 http://developer.android.com/reference/java/lang/Runtime.html

您想使用Runtime.exec 的版本之一。您需要使用 NDK 编译您的 C 程序并将其包含在您的 APK 中。

【讨论】:

  • 是的,但除非存在许可问题,否则强烈建议将程序编译为库并从 JNI 包装器中调用它,而不是从必须显式的可执行文件中执行新进程部署。
  • @ChrisStratton 这个问题的标题是“我可以调用一个 C 程序...”。不是“你能给我一个非常喜欢的方法来解决我的问题吗?”
  • 请注意问题的措辞“我想修改它以便我可以调用 Java中的图像生成函数”(添加了重点)并告诉我您是否认为这听起来更像是启动可执行文件或调用函数?此外,即使启动一个可执行文件是我们的意图,我们也不会限制指出更好的方法,尤其是在发布 comment 而不是 answer 时。
  • 此外,您在这里的建议是不够​​的,因为您不能简单地“将其包含在您的 APK 中” - 这适用于 Android 将自动以可运行形式复制出来的 jni 库,但不适用于可执行文件您的程序必须从 apk 复制到实际的文件系统本身。
【解决方案2】:

Android 提供应用私有文件 hive,见http://developer.android.com/guide/topics/data/data-storage.html#filesInternal。你在 Java 中得到它的完整路径为 Context.getFilesDir(),你 can 从本机代码中找到这个路径。

【讨论】:

    猜你喜欢
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多