【发布时间】:2012-07-21 14:46:27
【问题描述】:
我的 android 游戏使用 OpenGL 和 Android NDK。我目前通过从我的 Activity/GLSurfaceView 进行 JNI 本机调用,将必要的 dpi 值作为参数传递。
目前我正在使用:
// request an instance of DisplayMetrics, say 'dm' from android.
float densityFactor = dm.density;
// pass this as a parameter using JNI call
myCustomNativeMethod(densityFactor); # implementation in a 'game.c' file
我只是想知道是否可以在不使用 JNI 接收它们(参数)的情况下访问 android 环境参数。可能是,导入一些低级别的 NDK 头文件(.h),这将有助于我直接与 UI 系统进行通信或其他什么?
我的意思是:
#import <android_displayparams.h>
...
float densityfactor = getDisplayParamDensity(); // <- Is this possible?
注意:这是出于好奇而提出的问题,我知道这样的机制可能不是一个好的做法。
【问题讨论】:
-
这是否为您解答? stackoverflow.com/q/7594527/517561
-
@Sparky:恐怕不会。我知道 DisplayMatrics 类可以访问适当的值。我想知道是否有本地访问方式。谢谢!
-
我已经稍微改进了这个问题。
-
从技术上讲,是的,设备上有配置文件,您可以解析类似的文件,但您不应该这样做,因为它不是一个稳定的 API,并且可能会更改。可以说你也可以避免 jni 使用套接字通信,但这只是愚蠢的。在活动创建时将配置信息从 java 传递到您的本机代码实际上并不是一个足够大的问题来尝试解决。当您必须在时间紧迫的情况下重复执行某些操作,或提供回调或类似的事情时,拥有原生 API 会很好。
-
@HariKrishnaGanji NDK 如此被忽视......一年后,这仍然是不可能的。
标签: android opengl-es android-ndk dpi