当前位置: 首页 > 面试题库 >

android通过C获取屏幕尺寸

柴阳云
2023-03-14
问题内容

我想通过c获取屏幕尺寸。我知道jni支持从c调用Java。但是有人知道另一种方法吗?我的意思是从低级模块获取屏幕大小,而无需调用Java。

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity
{

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    Log.v("getWidth", Integer.toString(getWindowManager().getDefaultDisplay().getWidth()));
    Log.v("getHeight", Integer.toString(getWindowManager().getDefaultDisplay().getHeight()));
    }
}

我认为/ dev / graphics与我的问题有关


问题答案:

是的,您可以从/ dev / graphics / fb0获得屏幕分辨率,但是(至少在我的手机上)读取权限仅限于root用户和“
graphics”组中的用户。无论如何,您可以执行以下操作(为清楚起见,已删除错误检查):

// ... other standard includes ...
#include <sys/ioctl.h>
#include <linux/fb.h>

//...

struct fb_var_screeninfo fb_var;
int fd = open("/dev/graphics/fb0", O_RDONLY);
ioctl(fd, FBIOGET_VSCREENINFO, &fb_var);
close(fd);
// screen size will be in fb_var.xres and fb_var.yres

我不确定这些接口是否被视为“公共” NDK接口,因为我不知道Google是否认为“ Android在Linux上运行并使用Linux
Framebuffer接口”是公共API的一部分,但它确实似乎工作。

如果确实要确保它是可移植的,则可能应该具有调用Java WindowManager API的JNI后备。



 类似资料:
  • 因为有两种方法可以获得尺寸。从13级以上的API来看,这种方法对我很有效 14岁以下,这种方法对我有效 我可以得到所有API级别的屏幕大小吗???请帮帮我。

  • 问题内容: 我已经仔细阅读了http://developer.android.com/guide/practices/screens_support.html和其他相关网站中的文档,但我仍然对此表示怀疑。让我解释: 我已经为值,values-large和values- xlarge实现了dimens.xml,因此,例如,在平板电脑上运行时,我的Android应用程序很好。但是,我指定了填充,边距,

  • 我需要在应用程序最小化时获得一个屏幕截图 这段代码是从应用程序activity的rootView中抓取的截图: 如何从显示获得截图,而不是从activity视图?

  • 问题内容: 我想知道是否可以使用tkinter计算屏幕尺寸。 我想要这样做,这样可以使程序在屏幕中央打开。 问题答案:

  • 问题内容: 嗨,我正在编写图形程序,我一直在寻找一种获取所使用屏幕物理尺寸的方法。我可以获得以像素为单位的屏幕大小以及逻辑分辨率。我似乎找不到任何地方可以获取任何显示器规格中始终具有的物理尺寸(例如19“-376 x 301 mm)。问题是,加载此信息时,此信息是否甚至还存储在OS中的任何位置?我正在编写的程序需要在Mac和Windows上运行。 谢谢! nt 问题答案: 我认为Java不可能实现

  • 问题内容: 如何获取Android屏幕的可用高度?我需要减去状态栏/菜单栏或屏幕上可能显示的任何其他装饰的高度,并且需要它适用于所有设备。另外,我需要在onCreate函数中知道这一点。我知道之前曾有人问过这个问题,但我已经尝试过他们的解决方案,但没有一个起作用。这是我尝试过的一些方法: 我已经在API 7-17上测试了此代码。不幸的是,在API 13的水平和垂直底部都没有多余的空间,而在API