2016-04-23 11 views
2

に戻るボタンの押下を検出したいと思います。私はこのコードを試しましたが、ログは表示されませんでした。誰かがなぜ私を説明することができますか?そしてそれを機能させるために私は何をすべきですか?戻るボタンの押下を検出する

これを行うための全体的なアイデアは、あなたのサービスがView.OnKeyListenerは、ご希望の機能を提供しない実装し、ビューではありません、このチュートリアルからhttp://www.kpbird.com/2013/03/android-detect-global-touch-event.html

public class MyService extends Service implements View.OnKeyListener{ 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     LinearLayout touchLayout = new LinearLayout(this); 
     // set layout width 30 px and height is equal to full screen 
     LayoutParams lp = new LayoutParams(30, LayoutParams.MATCH_PARENT); 
     touchLayout.setLayoutParams(lp); 
     touchLayout.setBackgroundColor(Color.RED); 
     touchLayout.setOnKeyListener(this); 
     WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
     // set layout parameter of window manager 
     WindowManager.LayoutParams mParams = new WindowManager.LayoutParams(
       30, // width of layout 30 px 
       WindowManager.LayoutParams.MATCH_PARENT, // height is equal to full screen 
       WindowManager.LayoutParams.TYPE_PHONE, // Type Phone, These are non-application windows providing user interaction with the phone (in particular incoming calls). 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, // this window won't ever get key input focus 
       PixelFormat.TRANSLUCENT); 
     mParams.gravity = Gravity.LEFT | Gravity.TOP; 

     mWindowManager.addView(touchLayout, mParams); 
    } 

    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK){ 
      Log.v("Point","KeyCode_Back"); 
      return false; 
     } 
     return false; 
    } 
} 

答えて

1

を取らしました。

サービスは、アプリケーションのバックグラウンドで実行される「UIなしのアクティビティ」を意図しています。バインダー/ブロードキャストを使用してサービスと通信することはできますが、UIのやりとりはアクティビティー/フラグメントに委ねるのが最善です。

添付:
コメントに投稿したリンクのようにオーバーレイを作成しようとしているようです。このチュートリアルは2013年以降に変更されました。

一般に、Androidシステムは、以下に説明する方法のようにApp beheaviourを推奨しません。このようなコーディングは、マルウェアと見なされるカテゴリLockscreen/Kiosk-Appの動作に入ります。

アプリ内で小さなメニューを実現したい場合は、このようなサービスを使用せずに完全に上手く行うことができます。あなたのアプリの外には、画面上の何かをハードコーディングするよりも、より使いやすいウィジェットを使用するオプションがあります。

+0

@ r%c3%bcdiger私はこのようなことを試みました。http://www.kpbird.com/2013/03/android-detect-global-touch-event.html –

+0

あなたのリンク –

関連する問題