25

Androidで配布されているデバイスを使用し、ランチャーを使用せずに、Android(ARM)上に構築された独自の組み込みシステムを作成したいと思います。

また

アプリケーションを上から起動してAndroidを起動し、アプリケーションを閉じることを拒否して、アプリからAndroidをシャットダウンしたいと思います。

4

2 に答える 2

33

基本的に、「ホーム」がアプリケーションであるAOSPのカスタムビルドを作成しようとしています。/ 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インテント

システムが起動を終了すると(より具体的にはActivityManager)、そのインテントを送信します。したがって、Launcherの代わりにアプリを起動する場合は、同様のインテントフィルターを使用してアプリを作成し、デフォルトのLauncher2を削除します(build / target / product / generic.mkのリストから削除し、代わりにアプリを配置します)。 )。また、関連する.mkファイルに次のようなものがあることを確認してください。

LOCAL_OVERRIDES_PACKAGES := Home

ユーザーがアイコンを使用して他のアプリを起動する方法をアプリが提供しない限り(ランチャーのように)、他のアプリは起動されません。もちろん、何かがアプリによって制御されているパス以外のパスからアクティビティ開始インテントを送信しない限り、たとえば、ターゲットのAndroidシェルで「am」コマンドを使用します。

于 2012-07-04T15:45:19.057 に答える
2

あなたの質問の音によって、あなたはあなた自身のカスタムAndroidOSビルドを作成したいと思います。これは通常のAndroidアプリの開発よりも複雑になるため、特にAndroidOSのソースコードをよく読む必要があります。

ここからAndroidOpenSourceProjectから始めることをお勧めします。

于 2012-07-03T14:14:57.810 に答える