如何使用一个应用程序制作嵌入式Android操作系统?

时间:2012-07-03 14:00:22

标签: android arm embedded kiosk-mode

我想在Android(ARM)上构建我自己的嵌入式系统,只使用Android分发但没有启动器的设备。

我想在我的应用程序启动时启动Android,并拒绝关闭它并从我的应用程序关闭Android。

3 个答案:

答案 0 :(得分:28)

基本上,您正在尝试自定义构建AOSP,其中“Home”是您的应用程序。如果您查看 / packages / apps / Launcher2 ,您将找到默认主屏幕的代码。

如果您查看那里的 AndroidManifest.xml 文件,您会看到如下内容:

     <activity
        android:name="com.android.launcher2.Launcher"
        android:launchMode="singleTask"
        android:clearTaskOnLaunch="true"
        android:stateNotNeeded="true"
        android:theme="@style/Theme"
        android:screenOrientation="nosensor"
        android:windowSoftInputMode="stateUnspecified|adjustPan">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.MONKEY"/>
        </intent-filter>
    </activity>

实际上,这表示此活动会对

作出反应
  

android.intent.category.HOME intent

当系统完成引导(更具体地说是ActivityManager)时,发送该意图。因此,如果您希望应用程序启动而不是Launcher,只需创建一个具有类似意图过滤器的应用程序并删除默认的Launcher2(将其从 build / target / product / generic.mk <列表中取出/ em>而是把你的。)还要确保相关的.mk文件具有以下内容:

LOCAL_OVERRIDES_PACKAGES := Home

只要您的应用没有为用户提供使用图标启动其他应用的方式(如启动器那样),就不会启动任何其他应用;除非当然某些事情从您的应用程序控制的路径之外的其他路径发送一个活动开始意图 - 比如在目标的Android shell上使用“am”命令。

答案 1 :(得分:3)

根据您的问题,您想要创建自己的自定义Android操作系统版本。这比开发普通Android应用程序更具参与性,因此您将不得不进行大量阅读,尤其是Android OS源代码。

我建议你开始here at the Android Open Source Project

答案 2 :(得分:3)

查看恢复系统的来源;它是一个备用的引导环境,它简单得多。还有一些第三方版本也支持触摸屏。