4

私たちは、精神的および身体的に障害のある隣人の娘に、Android タブレットをトーカーとして使用できるアプリケーションを提供しようとしています。つまり、彼女はいくつかの大きなボタンを押すと、デバイスが音声を生成します。アプリケーションは基本的に WebView であり、音声生成の実行と制御に使用される Javascript の追加オブジェクトと、向きの変更を処理するロジックです。Html ファイルは、会話アイテムの特定のレイアウト用にオフラインで生成されます。また、デバイスをより魅力的にするために、音楽再生機能と画像表示機能を追加しました。

問題は、ホーム ボタンを押すと Android ランチャー画面の狂気に戻ってしまうことと、テスト デバイス (Archos 70) ではホーム ボタンが物理的なボタンではなく、タッチ スクリーン自体に表示されるため、簡単に操作できないことです。たまたま当たった。

したがって、ホーム、バック、ホームのシーケンスを押すだけで Android ランチャーに戻りたいと思います。その間に他のアクションはありません。

アプリケーション自体をランチャーにすることでこれを達成できますか? ホーム、バック、ホーム シーケンスで元のランチャーに戻るにはどうすればよいですか? これはAndroidの奥深くに潜んでいるようですね。

これまでに見つけた唯一の手がかりは、Car Home 代替アプリの Home ボタンのオーバーライドですが、これは評価が -1 であり、エミュレーターでのみ動作すると報告されています。また、元のランチャーを完全に放棄できるかどうかも疑問です。そうしないと、新しい HTML ファイルをダウンロードしたり、アプリケーションを強制終了して再起動したりできる USB 大容量デバイス コントロールなどにアクセスできなくなります。

私も喜んでクラッジに行きます。必要に応じてアプリケーションを再び前面に出すバックグラウンド サービスを開始できるのではないでしょうか。

4

2 に答える 2

4

ホームボタンは上書きできません。ホーム インテントに応答するアプリケーションを作成することはできますが (これはランチャーが行うことです)、それだけです。

于 2011-07-26T21:41:24.903 に答える
3

アプリケーション自体をランチャーにすることでこれを達成できますか? ホーム、バック、ホーム シーケンスで元のランチャーに戻るにはどうすればよいですか? これはAndroidの奥深くに潜んでいるようですね。

はい。奥まで入り込みすぎない。コンポーネントを指定してランチャーを手動で開始できます。これはデバイスやユーザーによって異なる場合があることに注意してください。これを個人的に使用する場合はハードコーディングできますが、リリースする場合は、ユーザーに許可する必要があります。実際のホーム アプリを指定します。

/* This should come from a preference that let's the user select an activity that can handle the HOME intent */
String packageName = "com.android.launcher";
String packageClass = "com.android.launcher2.Launcher";

Intent home_intent = new Intent(Intent.ACTION_MAIN);
home_intent.addCategory(Intent.CATEGORY_HOME);
home_intent.setComponent(new ComponentName(packageName, packageClass));
home_intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
/* Here you should catch the exception when the launcher has been uninstalled, and let the user save themselves by opening the Market or an app list or something. Users sometimes use root apps to uninstall the system launcher, so your fake launcher is all that is left. Might as well give the poor user a hand. */
startActivity(home_intent);

home/back/home の検出は少し厄介です。これは、home が onKeyEvent としてではなく、新しいインテントとして提供されるためです。戻るボタンを長押ししてからプロンプトを表示するのは、おそらく安全で適切な方法です。

于 2011-07-26T22:30:56.780 に答える