質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

2530閲覧

バックグラウンド(service)でタップログを検出したい

sadman

総合スコア11

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/05/20 13:11

###前提・実現したいこと
バックグラウンド(service)でタップログを検出したい

###発生している問題・エラーメッセージ

タップしてもログが出力されません…

###該当のソースコード

Java

1import android.app.Service; 2import android.content.Context; 3import android.content.Intent; 4import android.graphics.PixelFormat; 5import android.os.IBinder; 6import android.support.annotation.Nullable; 7import android.util.Log; 8import android.view.MotionEvent; 9import android.view.View; 10import android.view.WindowManager; 11import android.widget.TextView; 12 13 14public class MainService extends Service implements View.OnTouchListener { 15 private static final String TAG = "Hello"; 16 private final boolean FLAG = true; 17 private static final int TAP_COUNT = 10; 18 private View mView; 19 private long[] mTimestamp = new long[TAP_COUNT]; 20 int count = 0; 21 TextView txtMessage1; 22 23 24 @Nullable 25 @Override 26 public IBinder onBind(Intent intent) { 27 return null; 28 } 29 30 @Override 31 public int onStartCommand(Intent intent, int flags, int startId) { 32 WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 33 34 WindowManager.LayoutParams params = new WindowManager.LayoutParams( 35 0, 36 0, 37 WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 38 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 39 | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 40 PixelFormat.OPAQUE); 41 42 mView = new View(this); 43 mView.setOnTouchListener(this); 44 45 wm.addView(mView, params); 46 47 48 txtMessage1 = new TextView(this); 49 wm.addView(txtMessage1, params); 50 51 52 return START_STICKY; 53 } 54 55 @Override 56 public void onDestroy() { 57 super.onDestroy(); 58 59 WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 60 wm.removeView(mView); 61 mView = null; 62 } 63 64 @Override 65 public boolean onTouch(View v, MotionEvent event) { 66 switch (event.getAction() & MotionEvent.ACTION_MASK) { 67 case MotionEvent.ACTION_DOWN: 68 Log.d("TouchEvent", "X:" + event.getX() + ",Y:" + event.getY()); 69 break; 70 case MotionEvent.ACTION_UP: 71 Log.d("TouchEvent", "X:" + event.getX() + ",Y:" + event.getY()); 72 break; 73 } 74 return true; 75 } 76}

###補足情報(言語/FW/ツール等のバージョンなど)
Android Studio 2.3.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

WindowManager.LayoutParamsの第1、第2引数を0にしているからではありませんか?
WindowManager.LayoutParamsの第1、第2引数はそれぞれWindowManegerの横と縦の長さです
WindowManegerの横と縦の長さが0なのでonTouchをオーバライドしてやってもタッチイベントが発火しないのだと思われます。

投稿2017/05/20 14:14

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問