9

ストックのアンドロイドまたはセンスを置き換えるために、独自の「ホーム」を作成しました。

すべてが正常に機能しており、必要なものはすべて入手できます。私の唯一の問題は、自分のランチャーでホームキーを長押しする(通常、起動した最後の6つのアクティビティを表示する)に置き換えることです。

MENU ボタンの長押しを次のコードに置き換えることに成功しました。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

//Log.i(TAG,"Keycode: "+keyCode);

if (keyCode == KeyEvent.KEYCODE_MENU) {
    // this tells the framework to start tracking for
    // a long press and eventual key up. it will only
    // do so if this is the first down (not a repeat).

    event.startTracking();
    return true;
}
(...)

そして、長押しのためのこの部分の部分:

  @Override
    public boolean onKeyLongPress(int keyCode, KeyEvent event) {

        //Log.i(TAG,"LONG"+keyCode);
        Toast.makeText(Launcher.this,"LONG "+keyCode, Toast.LENGTH_SHORT).show();

        if (keyCode == KeyEvent.KEYCODE_MENU) {
        (...)

しかし問題は、KeyEvent.KEYCODE_MENU を KeyEvent.KEYCODE_HOME に置き換えることができなかったことです。

ユーザーがホームの長押しを使用できないようにするコードにロックされているものですか?

あなたが私に与えてくれるすべての情報に感謝します。

4

3 に答える 3

8

私がこれまでに読んだことのあることはすべて、これはできないと述べています... Android初心者向けの投稿で、非常によく似た質問をしました。

http://groups.google.com/group/android-beginners/browse_thread/thread/d8cdcd1c52d79ef1/0f4b184da6f248a9?lnk=gst&q=home+key#0f4b184da6f248a9

しかし、最近、ホームキーをダブルタップして起動できるアプリに出くわしたので、何かできることがあるはずです. 私はしばらくそのアプローチを調べましたが、それを機能させることができませんでした。他の誰かがそれを理解したことがわかったので、もう一度突き刺します....

EDIT ホームボタンの長押しをオーバーライドすることはできませんが、ホームボタンの2回押しを正常に実装する方法を見つけました。これに対する一般的な考え方は次のとおりです。

  1. アプリをホーム代替アプリとして機能させる (SDK サンプルのサンプル ホーム アプリを参照)
  2. アプリで使用するホーム アプリを指定する方法を許可します (ユーザーにホーム代替アプリのリストを提示するのは非常に簡単です)。
  3. ホームボタンを最初に押すと、タイマーが開始されます。
  4. タイマーがタイムアウトした場合は、ホーム アプリケーションを起動します
  5. タイマーが停止する前にユーザーがホーム キーを 2 回押した場合は、アプリを起動します。

基本的に、ホーム交換アクティビティは、ユーザーが指定した実際のホーム アプリを起動するか、アプリを起動するだけで、独自の UI を表示することはありません。

私はこれがうまく機能することを発見し、実際に Android マーケットでこれを行うアプリを公開しています。実際の動作を見たい場合は、「Quick Launch」と呼ばれ、発行元名が「MagouyaWare」としてリストされています

お役に立てれば!

于 2010-07-08T23:18:07.000 に答える
5

HOMEボタン長押しでフェイクアクティビティを登録できます

マニフェストに追加することにより:

<intent-filter>
    ...
    <action android:name="android.intent.action.ASSIST" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
于 2015-11-12T13:35:53.630 に答える
0

HOMEキーに取り組む方法を見つけました。アプリケーションの場合、マニフェストを次のように設定します

    <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"/> Now ur application is an alternate Launcher application.

adb を使用し、パッケージ マネージャーを使用してランチャー アプリケーションを無効にします

pm com.android.launcher2 を無効にします。

これで、ホーム キーを押しても同じ画面に留まるようになりました。

実際にはあまりコードがありません。役に立ったら説明しようと思います。マニフェスト ファイル内の Android アプリケーションの場合、通常はインテント フィルターを次のように保持します。

代わりに、インテント フィルターを次のようにする必要があります。


これは LAuncher と同じインテント フィルターです。

これで、代替の launchjer アプリケーションができました。唯一のランチャー アプリケーションにするには、既存のランチャー アプリケーション (Android のデフォルトのランチャー) をアンインストール/無効化する必要があります。

このためには、デバイス/エミュレーターを接続し、adb (android デバッグ ブリッジ) を開始する必要があります。次に、以下の手順に従います。

adb シェル

pm list packages //これにより、インストールされているすべてのパッケージが一覧表示されます

pm disable com.android.launcher //ランチャー アプリケーションを無効にします。

リブート。

于 2010-12-27T11:57:25.613 に答える