Android
以Linux kernel
为基础,大多数Linux系统都使用GNOME
,KDE
,LXDE
等桌面环境。
我使用busybox
,arm cross compiler
工具链和arm-J2SE
编译了Linux内核和最小根文件系统。目前我有基本的Command Line Interface
。现在我想使用桌面环境(启用鼠标并处理鼠标或触摸屏输入/事件)。因为我的java命令行代码运行正常,但是当我使用swing
或awt
应用程序时,它会显示此异常。
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的环境。我发现很少有用于构建像XLIB/X11,SDL
这样的GUI环境的库,它可以管理那些鼠标和触摸屏事件。任何人都可以告诉我从哪里开始实现我的目标。很少有Linux系统使用startx
命令启用GUI环境然后带来了桌面,窗口,鼠标等。我需要这样的东西来运行我的java gui应用程序。任何人都可以引导我。
答案 0 :(得分:2)
I know every Linux system should have a desktop environment like GNOME, KDE, LXDE etc.
那是错的。考虑服务器或嵌入式系统(不是智能手机),它为什么需要UI? OS内核不必提供GUI。
以下是Android架构/图层层,Surface Manager
+ Window Manager
+ View System
是Android的桌面环境。
有关Linux和图形系统的更多信息,请查看SO question。
对于Java异常,您正在使用无头Java环境并尝试使用Swing / AWT,而不支持无头Java环境的定义。
How can I setup a GUI environment that supports mouse,keyboard or other inputs?
您正在尝试移植 Android到您的设备,如果您的设备没有正在进行的Android端口工作,则需要深入了解它所拥有的外围设备以及Android系统。网上有大量的信息,但这不是一项微不足道的任务。
答案 1 :(得分:0)
首先,Linux发行版不需要GUI。或者你必须说 - X Window System。
有谁可以告诉我Android使用的是哪种桌面环境?
无。 Android不使用X.
我是否必须实现支持键盘和鼠标的桌面环境?
我不知道。我不知道你想要达到的目的。如果您想查看您的程序是否适用于Android,请查看Android SDK。您可能需要查看Android模拟器并编写代码,并牢记SDK。