私は自分のランチャーを使わずにAndroidで配布されたデバイスを使用するだけで、Android(ARM)上に構築された独自の組み込みシステムを作りたいと考えています。1つのアプリケーションで埋め込みAndroid OSを作成するにはどうすればよいですか?
ORは私がトップに立ち上げた自分のアプリケーションでのAndroidを起動して、私のアプリから、シャットダウンのAndroidを閉じることを拒否します。
私は自分のランチャーを使わずにAndroidで配布されたデバイスを使用するだけで、Android(ARM)上に構築された独自の組み込みシステムを作りたいと考えています。1つのアプリケーションで埋め込みAndroid OSを作成するにはどうすればよいですか?
ORは私がトップに立ち上げた自分のアプリケーションでのAndroidを起動して、私のアプリから、シャットダウンのAndroidを閉じることを拒否します。
「ホーム」がアプリケーションである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>
Essentialyを、これはこの活動が
アンドロイドに反応することを言います.intent.category.HOME インテント。
システムが起動すると(より具体的にはActivityManager)、そのインテントを送信します。したがって、Launcherの代わりにアプリを起動したい場合は、似たインテントフィルタを持つアプリを作成し、デフォルトのLauncher2を削除します(ビルド/ターゲット/製品/ generic.mkのリストから外してあなたの代わりに)。
LOCAL_OVERRIDES_PACKAGES := Home
あなたのアプリは(ランチャーが行うように)アイコンを使用して他のアプリを起動するユーザーのための方法を提供しない限り、他のアプリ:また、関連の.mkファイルはこのような何かを持っていることを確認してください開始されます。もちろん、何かが、あなたのアプリで制御されている以外のパスからActivity起動のインテントを送信しない限り、ターゲットのAndroidシェルで "am"コマンドを使用するなどします。
ご質問のサウンドで、独自のカスタムAndroid OSビルドを作成したいと考えています。これは普通のAndroidアプリを開発するよりも複雑になり、その結果、特にAndroid OSのソースコードを読んでいく必要があります。
回復システムのソースを調べてください。それははるかに簡単な代替ブート環境です。タッチスクリーンをサポートしているサードパーティのバージョンもあります。
これはすばらしい答えです!私はこれより多くを得ています。 –
は 'LOCAL_OVERRIDES_PACKAGES:= Home'の' Home'で、あなたはLauncher2を置き換えているアプリですか? –
'Home'はAOSPで使われている現在のランチャーのモジュール名だと思います。古いAndroidのビルドはホームモジュールを使用しているかもしれませんが、現在はLauncher2です。ですから、 'LOCAL_OVERRIDES_PACKAGES:= Launcher3'、あるいは' LOCAL_OVERRIDES_PACKAGES:= Launcher2 Launcher3'を使うべきです。 Cyanogenmod 12はTrebuchetランチャーを使用しているので、CMビルドには 'LOCAL_OVERRIDES_PACKAGES:= Launcher3 Trebuchet' – Mixaz