c语言检测tft是否有触摸,如何检测 Android Studio 后台服务中的屏幕是否被触摸?_service_开发99编程知识库...

我正在做一个关于 Android Studio的项目。 我需要检测是否在 background 服务中触摸屏幕。 但是在不影响用户使用智能手机的情况下,我会发现屏幕是否触摸到了屏幕上的屏幕。

我说"在后台检测"时,应用的效果不会影响用户在屏幕上所做的事情。 我的进度 below 应该解释我在这里的意思:

我做了一个应用程序,可以检测用户在 background 中是否通过在android中实现onTouchListener并使用该onTouchListener布局。 我按照网站" http://kpbird.blogspot.com.au/2013/03/android-detect-global-touch-event.html"中的说明进行,并对整个屏幕进行了一些修改,以便检测整个屏幕。

但是,在我运行了创建用于检测屏幕触摸的服务的应用之后,每次用户触摸屏幕时,我的服务( 布局) 都会吸收触摸,所以用户无法正确使用他们的手机。 这是因为布局覆盖整个屏幕,并且在它的下阻止任何触摸信息,所以 icon 不知道有触摸,因此不会对用户做出React。 但我希望我的应用和服务允许用户使用他们的手机正常。

我听说android中的服务是为了不与用户交互而设计的( 例如 。 屏幕触摸) 并在 background 中工作,但是我想知道这是否有一个方法。

下面是我的服务代码:

public 类GlobalTouchService扩展服务实现 OnTouchListener{private String TAG = this.getClass().getSimpleName();

//window manager

private WindowManager mWindowManager;

//linear layout will use to detect touch event

private LinearLayout touchLayout;

@Override

public IBinder onBind(Intent arg0) {

return null;

}

@Override

public void onCreate() {

super.onCreate();

//create linear layout

touchLayout = new LinearLayout(this);

//set layout width 30 px and height is equal to full screen

LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

touchLayout.setLayoutParams(lp);

//set color if you want layout visible on screen

//touchLayout.setBackgroundColor(Color.CYAN);

//set on touch listener

touchLayout.setOnTouchListener(this);

//fetch window manager object

mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

//set layout parameter of window manager

WindowManager.LayoutParams mParams = new WindowManager.LayoutParams(

WindowManager.LayoutParams.MATCH_PARENT,//width is equal to full screen

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;

Log.i(TAG,"add View");

mWindowManager.addView(touchLayout, mParams);

}

@Override

public void onDestroy() {

if(mWindowManager!= null) {

if(touchLayout!= null) mWindowManager.removeView(touchLayout);

}

super.onDestroy();

}

public void showAlert(View view) {

AlertDialog.Builder myAlertBuilder = new AlertDialog.Builder(this);

myAlertBuilder.setMessage(getString(R.string.alertMessage))

. setTitle(getString(R.string.alertTitle))

. setPositiveButton(getString(R.string.alertPositiveChoice), new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

})

. setNegativeButton(getString(R.string.alertNegativeChoice), new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

onDestroy();

}

});

AlertDialog myAlert = myAlertBuilder.create();

myAlert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

myAlert.show();

}

@Override

public boolean onTouch(View v, MotionEvent event) {

//if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_UP)

//Log.i(TAG,"Action :" + event.getAction() +"t X :" + event.getRawX() +"t Y :" + event.getRawY());

View myView = null;

//showAlert(myView);

///

return false;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值