gpt4 book ai didi

android - 有没有办法在不使用 JNI 的情况下本地访问 android DPI?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:02 27 4
gpt4 key购买 nike

我的 Android 游戏使用 OpenGL 和 Android NDK。我目前通过从我的 Activity/GLSurfaceView 进行 JNI native 调用,将必要的 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?

注意:这是一个出于好奇的问题,我知道这样的机制可能不是一个好的做法。

最佳答案

使用 Java Activity/GLSurfaceView 将 DPI 作为参数传递的设置看起来是最佳解决方案。

如果您使用 NativeActivity,您可以获得 DisplayMetrics.densityDpi使用:

#include <android/configuration.h>
#include <android_native_app_glue.h>
#include <android/native_activity.h>

int32_t getDensityDpi(android_app* app) {
AConfiguration* config = AConfiguration_new();
AConfiguration_fromAssetManager(config, app->activity->assetManager);
int32_t density = AConfiguration_getDensity(config);
AConfiguration_delete(config);
return density;
}

很遗憾,没有获取 DisplayMetrics.xdpi 和 DisplayMetrics.ydpi 的 API。

关于android - 有没有办法在不使用 JNI 的情况下本地访问 android DPI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11611290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com