ホームボタンが押されたことを取得する方法

6,314 views
Skip to first unread message

たろサ

unread,
Sep 30, 2010, 11:42:53 AM9/30/10
to android-g...@googlegroups.com
 こんにちは、たろサです。

 下記のような感じで、Dialogが閉じたときをonDismiss()で取得しているのですが、
AlertDialog dialog = new AlertDialog.Builder(getContext())
.setTitle( moji )
.
.
.show();
dialog.setOnDismissListener(new OnDismissListener(){
@Override
public void onDismiss(DialogInterface dialog) {
}

 この状態で、ホームボタンが押されてDialogが消えた状態も取りたいのですが、
「Dialogが出ているときにホームボタンが押された」という状態を取得するには、どうす
ればいいのでしょうか。
 onDismiss()には引っかからないです。

 view.setOnKeyListener( )を使って取得すると思うのですが、どう書いたらいいのか
わかりません。

 教えてください。よろしくお願いします。

 後、もう1つ、これもわからないのですが、
 プログラム中で、画面を「横使い」「縦使い」と条件によって、変更したいのですが、
画面を切り替えるコマンドがわかりません。これも、教えてください。

 よろしくお願いします。
 
--
山本三七男 (Minao Yamamoto) ---------------- ハンドル:たろサ -----
E-Mail: taro...@gmail.com

adachi

unread,
Sep 30, 2010, 1:17:47 PM9/30/10
to 日本Androidの会
adachi と申します。

androidでは、Homeボタンのkeyイベントはアプリケーションに通知されない仕組みになっているはずです。
なので、「Dialogが出ているときにホームボタンが押された」という状態を取ることはできないのではないかと思います。


Kd

unread,
Sep 30, 2010, 1:51:40 PM9/30/10
to android-g...@googlegroups.com
Rともうします。

ホームボタンは直接とれませんが、ホームボタンが押されたときに

ブロードキャストのIntent.ACTION_CLOSE_SYSTEM_DIALOGS

をだすので、それをキャッチするようにしてます。

しかし、アプリがバックグラウンドへ移行するのを止めることはできないので、

受け取ってすこし作業するぐらいしかできません。


向きは、

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
これで横向き(固定)になります。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
これで縦向き(固定)になります。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
これでセンサーに向きをまかせます。



awwa

unread,
Sep 30, 2010, 8:23:26 PM9/30/10
to android-g...@googlegroups.com
あわと申します。

Intent.ACTION_CLOSE_SYSTEM_DIALOGS
で確かにホームキーが押されたことが取れます。
ただ、スクリーンONまたはOFFのタイミングでも同じブロードキャストが発行されていたような気がします。(すみません、記憶違いかもしれませんが)
実装したい内容によってはこのブロードキャストを取るだけではなくもう少し工夫が必要かもしれません。

2010年10月1日2:51 Kd <osusia...@gmail.com>:




--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。

たろサ

unread,
Oct 1, 2010, 10:39:48 AM10/1/10
to android-g...@googlegroups.com
 たろサです。

 基本的に直接取れない仕様なのですね。理解しました。
 
 ホームボタンが押されると、onPause()が呼ばれるので、プログラム中で、今何をして
いたのかという状態を変数に持っておこうかなと思います。画面が回転してもonPause()
が呼ばれるようですね。
 どこかに、onPause()が呼ばれる条件が書いてあるのかな。今、実行させてみると、
onPause()が呼ばれて、直ぐにonStop()が呼ばれますね。

 dialog表示中に、回転すると・・・、おお何か、ここら辺の処理がややこしいですね。
 これは、再表示の方法をいろいろ考えないと。

> setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
 ありがとうございます。
 参考にさせていただきました。
((Activity)getContext()).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

 こんな感じでキャストしてやればできている感じです。

 ありがとうございます。

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信
> してください。
> このグループから退会するには、android-group-j...@googlegroups.com
> にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこ
> のグループにアクセスしてください。

あんざいゆき

unread,
Oct 2, 2010, 9:07:57 AM10/2/10
to android-g...@googlegroups.com
あんざいです。

 Dialog が出ている状態では試してないのですが、

 ユーザーが Home Key を押して
 アプリを background に行かせるときは、
  Activity.onUserLeaveHint()  

 が呼ばれます。
 ブログに書いたので、参考になるといいのですが。
 http://y-anz-m.blogspot.com/2010/10/androidhome.html
 


--
あんざい ゆき
anzai...@gmail.com
twitter : @yanzm

 

2010年10月1日23:39 たろサ <taro...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages