Homeアプリ作成について

585 views
Skip to first unread message

penpen

unread,
Oct 9, 2013, 1:44:13 PM10/9/13
to android-g...@googlegroups.com

初めて投稿させていただきます。

現在Homeアプリを作成しています。
Homeアプリがデフォルト起動の場合、Homeボタンを押した際に処理させたいのですが、何かいい方法はないでしょうか?
onUserLeaveHintメソッドを使用しましたが、反応しなかったです。

Kuchinashi

unread,
Oct 15, 2013, 2:51:50 AM10/15/13
to android-g...@googlegroups.com
Kuchinashiと申します.

ホームボタンを押すとホームアプリが当然呼び出されてonResumeが呼ばれますので,そこに処理を実装すれば良いのではないでしょうか?
onUserLeaveHintは,ホームアプリでないアプリの実行中にホームボタンが押され,ユーザがそのアプリを離れたときに呼ばれるメソッドです.
(そこだけで呼ばれるメソッドでもありませんが)

2013年10月10日木曜日 2時44分13秒 UTC+9 penpen:

penpen

unread,
Oct 20, 2013, 10:49:07 PM10/20/13
to android-g...@googlegroups.com
Kuchinashi様ご返信ありがとうございます。

onResumeで試したのですが、うまくいきませんでした。
自作Homeアプリをデフォルト起動に設定、自作Homeアプリが起動している時にHomeボタンを押して見ましたが、なにも引っかかりませんでした。

理人 蓮見

unread,
Oct 21, 2013, 1:04:30 AM10/21/13
to android-g...@googlegroups.com
デフォルトで既存のホームアプリが設定されていませんか?

ランチャーだとは思いますが、「初期設定に戻す」
をやったあと、もう一度ホームボタン押すと出てくると思いますが。

2013年10月21日月曜日 11時49分07秒 UTC+9 penpen:

penpen

unread,
Oct 21, 2013, 2:46:12 AM10/21/13
to android-g...@googlegroups.com

既存のホームアプリのデフォルト起動の設定は削除し、ホームボタン押下
ホームアプリのダイアログ画面が表示され、自作のホームアプリを選択、「常にこの操作で使用する」にチェックし、起動しています。

自分の説明不足ですいません。
既存のホームアプリみたいに、初期画面からフリックし、画面遷移させた後に、ホームボタンを押下すると、初期画面にスクロールする
処理を実装したいと考えています。

2013年10月21日月曜日 14時04分30秒 UTC+9 理人 蓮見:

Kuchinashi

unread,
Oct 21, 2013, 9:25:06 PM10/21/13
to android-g...@googlegroups.com
Logcatにホームボタンが押された(インテントが投げられた)ログはちゃんと流れていますでしょうか?
私の方で作成したホームアプリでは,自分自身が起動しているときにホームボタン押下でonPause, onNewIntent, onResumeという順番で呼ばれていることを確認しました@Nexus7 2013

10-22 10:21:38.769: I/ActivityManager(569): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.example.home/.HomeActivity} from pid 569
10-22 10:21:38.779: D/Home(2383): onPause()
10-22 10:21:38.779: D/Home(2383): onNewIntent()
10-22 10:21:38.779: D/Home(2383): onResume()


2013年10月21日月曜日 15時46分12秒 UTC+9 penpen:

penpen

unread,
Oct 22, 2013, 6:46:59 AM10/22/13
to android-g...@googlegroups.com
ログの方も見てみましたが呼ばれていないようです。
Activity内にonNewIntentをオーバーライドし、試してみましたがダメでした・・・

いくつか、質問させてください。
・ホームボタンが押された(インテントが投げられた)
  というのは、onNewIntentのことを指しているのでしょうか?
  それともstartActivity()メソッドを使い自分自身を呼び出すという意味でしょうか?

・Manifestファイルで設定している値が原因などで呼ばれないというのはありますでしょうか?
  現在アプリケーションにandroid:launchMode="singleTask"を追加しています。
 
まだまだ勉強不足で、大変申し訳ないです。 


2013年10月22日火曜日 10時25分06秒 UTC+9 Kuchinashi:

Kuchinashi

unread,
Oct 23, 2013, 2:35:19 AM10/23/13
to android-g...@googlegroups.com
Kuchinashiです.

すみません,ちょっとこちらも混乱してきました.

> ホームボタンが押された(インテントが投げられた)というのは、onNewIntentのことを指しているのでしょうか?
> それともstartActivity()メソッドを使い自分自身を呼び出すという意味でしょうか?

そもそもpenpenさんはホームボタンをどう定義していますか?
私は上記画像の真ん中のボタンで話を進めていましたが,共通の認識であっていますか?

上記ボタン(または同様の動作が割り当てられたハードウェアキー)が押されると,OSによって{act=android.intent.action.MAIN cat=[android.intent.category.HOME]のインテントが投げられます.アプリ側のonNewIntentやstartActivity()を呼び出す必要は有りません.
このonNewIntentは,上記インテントが投げられた(ホームボタンが押された)”後”,アプリで呼び出されるという意味です.
インテントが投げられたログがでていないのであれば,そもそもホームボタンがその役割を果たしていない(ホームボタンでない)気がします.
# 念のためですが,ログがプロセスなどによってフィルタされ,表示されていないというわけでもないですよね?

なお,とりあえずManifestは関係ないように思えます.
# 当然Manifestに下記IntentFilter貼っていますよね?
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.HOME" />
            </intent-filter>


2013年10月22日火曜日 19時46分59秒 UTC+9 penpen:

penpen

unread,
Oct 23, 2013, 11:44:11 AM10/23/13
to android-g...@googlegroups.com
画像の真ん中のボタンの話で認識はあっています。

ログはプロセスのフィルタされていました・・・
10-24 00:08:46.472: I/ActivityManager(378): START {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.example.test/.MainActivity} from pid 378
10-24 00:08:46.502: D/(20501): onPause
10-24 00:08:46.552: D/(20501): onCreate
10-24 00:08:46.562: D/(20501): onStart
10-24 00:08:46.562: D/(20501): onResume

ホームボタンを押下した際にこのようなログが出力されました。
デフォルト起動時は、Homeボタン押下するたびに、onCreateは呼ばれないと思っていました。

Manifestの方には貼っております。


2013年10月23日水曜日 15時35分19秒 UTC+9 Kuchinashi:

penpen

unread,
Oct 26, 2013, 4:06:50 AM10/26/13
to android-g...@googlegroups.com

penpenです。

Homeボタン押下時の処理について、
Reciever登録する事で解決いたしましたので、ご報告いたします。

filter = new IntentFilter();
filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
registerReceiver(クラス名, filter);

onPauseが呼ばれたら、Reciever解除
onResumeが呼ばれたら、Reciever登録

上記の処理で、Homeボタン押下時にアニメーションなど実装することができました。

ご返信、ありがとうございました。



2013年10月24日木曜日 0時44分11秒 UTC+9 penpen:
Reply all
Reply to author
Forward
0 new messages