2016-05-30 12 views
0

私は簡単なアプリケーションデモを作成し、私のサービスクラスにレイアウトを作成しました。 サービスクラスでレイアウトを作成しました。ユーザーがホームキーをクリックしたときにこのレイアウトを非表示にする必要があります。ホームキーを聞くには?

サンプルhereが見つかりました。setOnKeyListenersetOnFocusChangeListenerが実装されていますが、ホームボタンをクリックしても表示されません。

私のサービスクラスコード:

@Override 
    public IBinder onBind(Intent intent) { 
     // TODO: Return the communication channel to the service. 
     throw new UnsupportedOperationException("Not yet implemented"); 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
     WindowManager.LayoutParams params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.MATCH_PARENT, 
       WindowManager.LayoutParams.MATCH_PARENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | 
         WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
       PixelFormat.TRANSLUCENT 
     ); 
     LayoutInflater inflater = LayoutInflater.from(this); 
     View view = inflater.inflate(R.layout.service_layout, null); 
     view.setFocusable(true); 
     wm.addView(view, params); 

     view.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       Log.i("FROM", "HOME OR OTHER KEY PRESSED"); 
       return false; 
      } 
     }); 

     view.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       Log.i("FROM", "HOME OR OTHER KEY PRESSED"); 
      } 
     }); 
    } 
} 

答えて

1

は、放送を聴く:

public class HomeWatcherReceiver extends BroadcastReceiver { 
    private static final String SYSTEM_DIALOG_REASON_KEY = "reason"; 
    private static final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey" 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) { 

      String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); 

      if (SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason)) { 

       //homekey 

      } 

     } 
    } 
} 
+0

Imは自宅で、今のマニフェストXMLを示す.inないおかげでアクションを追加したりしないように必要がありますか? <意図-フィルタ> <アクションアンドロイド:名= "android.intent.action.CLOSE_SYSTEM_DIALOGS" />

+0

はXML <名前= "com.mengdd.hellohome.HomeWatcherReceiver" 受信アンドロイド>を追加する必要があります-filter> – Alan

+0

私は自分のプロジェクトに追加しましたが、まだ動作しません。私はテストアプリケーションをアップロードしているので、私はそれが必要な私を助けてください。 www.amozkade.ir/TsetHomeButtonService.rar –

関連する問題