3

Android建立在 a 之上Linux kernel,大多数 Linux 系统都使用桌面环境,如,GNOME等。KDELXDE

我已经编译了 Linux 内核和最小的根文件系统构建busyboxarm cross compiler工具链和arm-J2SE. 目前我有基本的Command Line Interface. 现在我想使用桌面环境(启用鼠标并处理鼠标或触摸屏输入/事件)。因为我的 java 命令行代码运行良好,但是当我使用swingawt应用程序时,它会显示此异常。

Exception in thread "main" java.awt.HeadlessException at
         java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
at javax.swing.JFrame.<init>(JFrame.java:224)
at Gui.main(Gui.java:7)

只是我看看javadoc,它显示,

public class HeadlessException
        extends UnsupportedOperationException

Thrown when code that is dependent on a keyboard, display, or mouse is called in an environment that does not support a keyboard, display, or mouse.

基本上它需要一些窗口管理或类似 GUI 的环境。我发现很少有用于构建 GUI 环境的库XLIB/X11,SDL,可以管理这些鼠标和触摸屏事件。谁能告诉我从哪里开始实现我的目标。很少有 Linux 系统使用startx命令来启用 GUI 环境,然后带来桌面、窗口、鼠标等。我需要这样的东西来运行我的 java gui 应用程序。谁能带我一条路。

4

2 回答 2

2

I know every Linux system should have a desktop environment like GNOME, KDE, LXDE etc.

那是错误的。考虑服务器或嵌入式系统(不是智能手机),为什么它需要 UI?操作系统内核不必提供 GUI。

下面是Android架构/层库,还有Surface Manager++是Android的Window Manager桌面环境View System

在此处输入图像描述

有关 Linux 和图形系统的更多信息,请查看这个SO question

对于您的 Java 异常,您使用的是无头 Java 环境,并且不支持根据无头 Java 环境的定义尝试使用 Swing/AWT。

How can I setup a GUI environment that supports mouse,keyboard or other inputs?

您正在尝试将Android移植到您的设备,如果您的设备没有正在进行的 Android 移植工作,则需要深入了解它所拥有的外围设备以及一般的 Android 系统。这些信息可以在网上大量获得,但这并不是一项简单的任务。

于 2012-11-20T09:56:35.047 回答
0

首先,Linux 发行版不需要 GUI。或者正如你必须说的 - X Window System。

谁能告诉我Android使用的是哪个桌面环境?

没有任何。Android 不使用 X。

我是否必须实施桌面环境来支持键盘和鼠标?

我不知道。我不知道你想要达到什么目的。如果您想查看您的程序是否适用于 Android,请查看 Android SDK。您可能想查看 Android 模拟器并在编写代码时牢记 SDK。

于 2012-11-20T09:58:10.703 回答