有没有办法本机访问Android DPI,而不使用JNI?

有没有办法本机访问Android DPI,而不使用JNI?,第1张

概述我的 Android游戏使用OpenGL和Android NDK.我目前通过从我的Activity / GLSurfaceView进行JNI本机调用,将必要的dpi值作为参数传递. 目前我正在使用: // request an instance of DisplayMetrics, say 'dm' from android. float densityFactor = dm.densit @H_403_1@ 我的 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

我只是想知道是否可以访问androID环境参数而不使用JNI来接收它们(参数).可能是,导入一些低级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;}

遗憾的是,没有API可以获取displayMetrics.xdpi和displayMetrics.ydpi.

总结

以上是内存溢出为你收集整理的有没有办法本机访问Android DPI,而不使用JNI?全部内容,希望文章能够帮你解决有没有办法本机访问Android DPI,而不使用JNI?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存