我们正在基于现有的 native 库开发 Android 应用程序。我们有一组 JNI 类来公开 native API。 native 库有一个 DPI 全局静态变量需要在这个 block 中初始化:
JNIEXPORT jint JNICALL JNI_OnLoad( JavaVM *vm, void *pvt ) {
...
}
问题是我如何获得 native 级别的设备 DPI。我知道在 Java 级别上,一旦 Activity 启动,您就可以通过 WindowManager 轻松获取该属性。是否可以在我的 Activity 启动之前获得该属性?
感谢您的帮助。
最佳答案
我记得,您需要有 Context 才能获得 DPI,但在 native 代码中您没有。我建议您添加一个将在 Application.onCreate 中调用的本地方法并设置您的本地变量。这不会在 JNI_OnLoad 中完成,而是在任何 Activity 开始之前完成。
关于Android:如何从 native 代码获取设备 DPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830272/