1. 程式人生 > >安卓後臺監聽按鍵事件

安卓後臺監聽按鍵事件

我們都知道要做監聽的話首先需要去重寫Activity的OnkeyDown方法,然而這種辦法只有當Activity在前臺的時候才能用!在後臺的話就不行了。

可以用的方法

利用AccessibilityService(安卓的無障礙輔助功能)

步驟.

1.配置檔案程式碼

<application>  
  <service android:name="你的無障礙輔助類名"  
      android:label="@string/accessibility_service_label">  
    <intent-filter>  
      <action android:name="android.accessibilityservice.AccessibilityService" />  
    </intent-filter>  
  </service>  
  <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />  
</application> 
2.這個 meta-data元素指的是在應用程式的資源目錄建立的一個XML檔案。(/res/xml/accessibility_service_config.xml). 下面的程式碼顯示了服務配置檔案的示例內容:
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:accessibilityFlags="flagRequestFilterKeyEvents"
    android:canRetrieveWindowContent="true"
    android:canRequestFilterKeyEvents="true"  
    android:description="@string/accessibility_description"
    android:notificationTimeout="100"/>

3.自己新建一個類去繼承他並重寫他的3個方法 假設你要監聽按鍵的話就重寫OnKeyEvent方法

public class RobMoney extends AccessibilityService {
	 
	private static final String TAG = "dxj";
	private Calendar c = Calendar.getInstance();
	int flag=0;
	@Override
	protected boolean onKeyEvent(KeyEvent event) {
		Log.i(TAG, "onKeyEvent");
		int key = event.getKeyCode();
	
		switch(key){
		case KeyEvent.KEYCODE_VOLUME_DOWN:
			
			
			Intent downintent = new Intent("com.exmaple.broadcaster.KEYDOWN");
			downintent.putExtra("dtime", System.currentTimeMillis());
			if(flag==0){
			sendBroadcast(downintent);
			flag+=1;
			}else if (flag==1) {
				flag=0;
			}
			Log.i(TAG, "KEYCODE_VOLUME_DOWN");
			break;
		case KeyEvent.KEYCODE_VOLUME_UP:
			
			Intent upintent = new Intent("com.exmaple.broadcaster.KEYUP");
			upintent.putExtra("utime", System.currentTimeMillis());
			if(flag==0){
				sendBroadcast(upintent);
				flag+=1;
				}else if (flag==1) {
					flag=0;
				}
			
		Log.i(TAG, "KEYCODE_VOLUME_UP");
	
			break;
			default:
				break;
		}
		return super.onKeyEvent(event);
	}
	
	@Override
	public void onInterrupt() {

	}
	
	@Override
	public void onCreate() {
		Log.i(TAG, "RobMoney::onCreate");
		super.onCreate();
	}

	@Override
	public void onAccessibilityEvent(AccessibilityEvent event) {
		// TODO Auto-generated method stub
		
	}

}
5.再去配置檔案裡面註冊一個廣播或者動態註冊,我這裡的話是通過監聽這個事件來發送一個廣播,廣播來處理事件原始碼:http://pan.baidu.com/share/link?shareid=2641899309&uk=4097462172 
以前還不會github。讓大家見笑了2018.5.7

相關推薦

後臺按鍵事件

我們都知道要做監聽的話首先需要去重寫Activity的OnkeyDown方法,然而這種辦法只有當Activity在前臺的時候才能用!在後臺的話就不行了。可以用的方法利用AccessibilityService(安卓的無障礙輔助功能)步驟.1.配置檔案程式碼<applic

android 後臺按鍵事件方法及demo

demo下載地址 =============== 1.概述:最方便的方式還是修改系統原始碼按鍵事件,將鍵值發廣播出來給應用監聽,其次是用設定裡面的輔助功能的AccessibilityService也可監聽按鍵事件,但是前提是需要在設定中開啟此輔助功能的開關才行,前面的

【PHP】手機物理返回按鍵

if(window.history && window.history.pushState) { $(window).on('popstate', function() { var hashLocation = location.hash;

DialogFragment 按鍵事件的方法(onkeydown)

this.getDialog().setOnKeyListener(new OnKeyListener()         {            public boolean onKey(DialogInterface dialog, int keyCode, KeyE

iOS 音量鍵事件的兩個方法+後臺音量鍵

方法一,使用通知: 1、新增監聽 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeDidChange:)name:@"AVSystemContro

JS 事件綁定、事件事件委托詳細介紹

兼容性 log 查看 and == 常用 提高 監聽 live 事件綁定 要想讓 JavaScript 對用戶的操作作出響應,首先要對 DOM 元素綁定事件處理函數。所謂事件處理函數,就是處理用戶操作的函數,不同的操作對應不同的名稱。 在JavaScript中,有三種常用的

JS中的事件事件

pan 交互 ack 其他 獲得 發生 listen 監聽器 pre 事件監聽:   使用監聽器(eventListener)來預定事件,在傳統軟件工程中稱成為觀察者模式   執行某種操作時(特定的交互瞬間),會產生對象,對象會沿事件流的方向傳播。 事件流:   事件流有

vue滾動事件 實現動態錨點

title 復制代碼 嘗試 理念 元素 滾動 功能 time 滿足 前幾天做項目的時候,需要實現一個動態錨點的效果 如果是傳統項目,這個效果就非常簡單。但是放到 Vue 中,就有兩大難題: 1. 在沒有 jQuery 的 animate() 方法的情況下,如何實現平滑滾動

事件綁定、事件事件委托

沒有 ack cap 總結 事件類型 ava 動態 blog 關於 在JavaScript的學習中,我們經常會遇到JavaScript的事件機制,例如,事件綁定、事件監聽、事件委托(事件代理)等。 一、事件綁定 要想讓 JavaScript 對用戶的操作作出響應,首先要對

js 後退事件及跳轉頁面

gpo post script log push pan rip var pre //直接跳轉 window.location.href="b.html"; //返回上一級頁面 window.history.back(-1); //返回下一級頁面 window.his

3.1.1 基於事件處理機制

講解 基於 example this apk imp cal href eat 3.1.1 基於監聽的事件處理機制 http://www.runoob.com/w3cnote/android-tutorial-listen-event-handle.html 本節引言:

js鍵盤事件

code key inf 回車事件 amp button pre 圖片 function 1、監聽全局鍵盤按下事件,例如監聽全局回車事件 1  $(document).keydown(function(event){ 2    if(event.keyCode

jquery滾動事件獲取scrollTop

測試 element UNC data- document font ole span 谷歌 css: .anchor_reached { color: #0073eb; } jquery: $(window).scroll(function(event){

jq 鍵盤事件

span 各類 con 處理 按鍵 ole 簡單的 一個 簡單 其實這個也是挺簡單的一些東西。也就是幾個參數: 一、首先需要知道的是: 1、keydown() keydown事件會在鍵盤按下時觸發.    2、key

通過jna簡單實現java後臺鍵盤觸發修改系統時間

      由於玩某網遊需要在出副本時等一分鐘,而修改系統時間+1分鐘可以提前出副本,避免麻煩寫了個java後臺監聽鍵盤觸發修改系統時間的指令碼,當按下設定好的鍵盤組合即呼叫修改函式。     修改時間的函式程式碼如下(呼叫CMD命令):

checkbox事件

<!DOCTYPE html> <html> <head> <title></title> </head> <script> function onClickHander(obj){

jquery onclick事件在 ios無效Android沒事

  <div class='center-popWindow-closeBtn'>關閉</div>   $('body').on('click', '.center-popWindow-closeBtn', function(){ c

後臺保活黑科技 播放無聲音樂

1、準備一段無聲的音訊,新建一個播放音樂的Service類,將播放模式改為無限迴圈播放。在其onDestroy方法中對自己重新啟動。 public class PlayerMusicService extends Service { private final static String TAG

vue中使用element-ui鍵盤事件

  vue中element-ui在使用el-input的時候,由於el-input在輸入框的外層添加了一層的<div class="el-input"></div>,把input隱藏在子級,所以el-input新增上了keyup無響應; <el

python pynput 按鍵持續時間

from pynput import keyboard import time def on_press(key): global last_time last_time = time.time() return False def on_rel