當前位置:首頁 » 安卓系統 » android監聽按鍵事件

android監聽按鍵事件

發布時間: 2022-04-22 04:14:16

Ⅰ Android怎樣監聽藍牙耳機的按鍵事件

其實對於Android系統,每次按鍵只會有一個唯一「鍵值」響應,使用起來感覺會模模糊糊的,但是其實對於系統來說是很清晰的。

AVRCP全稱(Audio/VideoRemoteControlProfile),是藍牙協議中的一個profile。從名字上就可以看出主要應用於Audio/Video控制。每個按鍵並不是獨立的,上-曲/下一曲是在正在播放音樂的時候才會有效,即才會向Android發送「鍵值」。

基於按鍵從Linux到Android分析具體對於的鍵值:

Linux掃描碼功能映射字串Android鍵值

00c8200 開始放音樂MEDIA_PLAYKEYCODE_MEDIA_PLAY

00c9201 停止放音樂MEDIA_PAUSEKEYCODE_MEDIA_PAUSE

00a3163 下一曲MEDIA_NEXTKEYCODE_MEDIA_NEXT

00a5165 上-曲MEDIA_PREVIOUSKEYCODE_MEDIA_PREVIOUS

Android應用代碼,完整測試應用:TeskKey。

總結:1號鍵會交替發送KEYCODE_MEDIA_PLAY/KEYCODE_MEDIA_PAUSE;2/3號鍵會在播放音樂時分別發送KEYCODE_MEDIA_PREVIOUS/.KEYCODE_MEDIA_NEXT。如果想要把藍牙耳機上的按鍵利用起來,可以在接收到KEYCODE_MEDIA_PLAY時播放無聲音樂以使能2/3號鍵。這樣就能完整接收3種鍵值了自行控制了。這個具體自行設計(測試代碼已經更新包含了)。

註:這種實現並不一定通用,比如我在深度定製的MIUI中測試,盡管啟動的TestKey應用,系統自帶的音樂播放器仍然能同時響應鍵值。

更新:

已經更新TestKey源碼,添加對藍牙耳機按鍵的監聽,實現方法就是上述中推測的方法,已經成功驗證過了。播放音樂參考《Android多媒體開發--資源文件播放》。效果圖:


問與答
1.這個只能在播放音樂的狀態下才能監聽到么?
答:根據上述的原理,這些按鍵也僅僅是應用在控制媒體時使用;且根據實際驗證沒有播放音樂時藍牙耳機的2/3號鍵是並沒有向Android設備發送鍵值(從底層Linux來看)。綜上所述,需要通過播放音樂來實現激活其向Android設備發送鍵值,針對這種情況可以播放一個「沒有聲音」的音樂文件來實現,這樣既可以監聽到2/3號鍵又可以不影響其它聲音的輸出。可以在前台時播放音樂,後台停止播放。

2.我現在主要是想監聽得到開關鍵(1號鍵)。 在做一個按下藍牙開關鍵後啟動一個語音識別的功能?
答:在我的測試條件下,1號鍵是可以正常監聽到的。1號鍵會交替發送KEYCODE_MEDIA_PLAY/KEYCODE_MEDIA_PAUSE鍵值。這個鍵不需要模擬播放音樂就可以正常的監聽到。

3.4號按鍵的監聽方法

答:所謂的4號按鍵,也就是指本文中的所測試型號的藍牙耳機上並沒有,但有可能其它型號的藍牙耳機上有。我沒有辦法測試驗證,所以這里就簡單敘述一下「新按鍵」的鍵值確定思路:1.先使用TestKey測試應用測試按鍵,測試Android上層是否可以得到對應鍵值。2.如果沒有得到,那麼就使用adbshellgetevent來看Linux底層可以不可以得到鍵值。然後根據按鍵從Linux到Android來確定Android上層使用的鍵值碼到底是多少。(當然,如果你實在不知道如何監聽,把藍牙耳機寄給我,我給你確定也行。:))

註:其實上述文章完全是根據按鍵從Linux到Android測試確定下來的。那是篇文章是剝開Android外殼來看「按鍵」事件的流程的,方法適用於所有輸入事件:各種按鍵/觸摸/物理鍵盤/滑鼠等待輸入設備。沒有一定的Linux開發經驗很難看懂和理解。

4.Android後台監聽按鍵怎麼實現

或:如何啟動一次應用後在後台一直監聽播放鍵因為有這樣一個場景在用戶開車的時候需按一下開關鍵就啟動語音識別的功能。

這個問題其實已經超出了本文討論的范圍,是Android系統對應用層的鍵盤事件(按鍵)的分發的問題了。正常情況下,按鍵只會向當前最端的應用分發鍵盤事件,也就是說在後台你邊音量鍵都監聽不了。

但是既然這種情況(後台應用監聽按鍵)的需求存在,那麼就一定有它存在的道理。比如「相機鍵」,按下後直接調出相機到最前台。從表面上看是相機響應了按鍵,但是從實現方法上來看,並不是通過鍵值來操作,必須通過其它方法,比如廣播或者其它等等。

明白了其中的道理後,那麼想要實現就好辦了。先看這個按鍵有沒有廣播,如要有接聽系統中發出來的廣播;如果沒有那麼對於定製系統可以自己在系統中添加一個廣播;總之,正常渠道是沒有辦法在後台監聽一些不應該是你監聽到的按鍵的。

更:查了一下,這個按鍵是有廣播的。這樣就可以後台響應了(不需要C/不需要root)。例子我就不試了,見Android官方例子RandomMusicPlayer。

其中的重點是這個廣播android.intent.action.MEDIA_BUTTON。

Ⅱ Android可監聽的事件類型(提示:用戶事件和系統事件,用戶事件又分為按鍵事件和觸屏事件)

在android系統中,存在多種界面事件,如點擊事件,觸摸事件,焦點事件,和菜單事件
用戶事件和系統事件等,事件發生時,android界面框架調用界面控制項的事件處理函數對事件進行處理。
如:用戶事件:
按鍵事件:keyevent將傳遞給onkey()函數進行處理
觸屏事件:touchevent將傳遞給ontouch()函數進行處理。

Ⅲ 如何捕獲android系統按鍵事件

下面是android學習手冊中關於按鍵的介紹,例子,文檔、源碼都可以看,360手機助手中下載

在Android系統中,存在多種界面事件,如點擊事件、觸摸事件、焦點事件和菜單事件等,在這些界面事件發生時,Android界面框架調用界面控制項的事件處理方法對事件進行處理。
Android系統界面事件的傳遞和處理遵循以下規則。
·如果界面控制項設置了事件監聽器,則事件將先傳遞給事件監聽器。
·如果界面控制項沒有設置事件監聽器,界面事件則會直接傳遞給界面控制項的其他事件處理方法。
·即使界面控制項設置了事件監聽器,界面事件也可以再次傳遞給其他事件處理方法。
·是否繼續傳遞事件給其他處理方法是由事件監聽器處理方法的返回值決定的。
·如果監聽器處理方法的返回值為true,表示該事件已經完成處理過程,不需要其他處理方法參與處理過程,這樣事件就不會再繼續進行傳遞。
·如果監聽器處理方法的返回值為false,則表示該事件沒有完成處理過程,或需要其他處理方法捕獲到該事件,事件會被傳遞給其他的事件處理方法。
在MVC模型中,控制器根據界面事件(UI Event)類型不同,將事件傳遞給界面控制項不同的事件處理方法。
·按鍵事件(KeyEvent)將傳遞給onKey()方法進行處理。
·觸摸事件(TouchEvent)將傳遞給onTouch()方法進行處理。
下面以EditText控制項中的按鍵事件為例,說明Android系統界面事件傳遞和處理過程。
假設EditText控制項已經設置了按鍵事件監聽器,當用戶按下鍵盤上的某個按鍵時,控制器將產生KeyEvent按鍵事件。Android系統會首先判斷EditText控制項是否設置了按鍵事件監聽器,因為EditText控制項已經設置按鍵事件監聽器OnKeyListener,所以按鍵事件先傳遞到監聽器的事件處理方法onKey()中,事件能夠繼續傳遞給EditText控制項的其他事件處理方法,完全根據onKey()方法的返回值來確定:如果onKey()方法返回false,事件將繼續傳遞,這樣EditText控制項就可以捕獲到該事件,將按鍵的內容顯示在EditText控制項中;如果onKey()方法返回true,將阻止按鍵事件的繼續傳遞,這樣EditText控制項就不能夠捕獲到按鍵事件,也就不能夠將按鍵內容顯示在EditText控制項中。
Android界面框架支持對按鍵事件的監聽,並能夠將按鍵事件的詳細信息傳遞給處理方法。為了處理控制項的按鍵事件,先需要設置按鍵事件的監聽器,並重載onKey()方法,示例代碼如代碼清單1所示。
代碼清單1 設置按鍵事件的監聽器,並重載onKey()方法
entryText.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
//過程代碼……
return true/false;
}
第1行代碼是設置控制項的按鍵事件監聽器。
第3行代碼的onKey ()方法中的參數:第1個參數View表示產生按鍵事件的界面控制項;第2個參數keyCode表示按鍵代碼;第3個參數KeyEvent則包含了事件的詳細信息,如按鍵的重復次數、硬體編碼和按鍵標志等。
第5行代碼是onKey()方法的返回值:返回true,阻止事件傳遞;返回false,允許繼續傳遞按鍵事件。
KeyEventDemo是一個說明如何處理按鍵事件的示例。
KeyEventDemo用戶界面如圖1所示。

圖1 KeyEventDemo用戶界面
從圖5-27中可以看出,最上方的EditText控制項是輸入字元的區域,中間的CheckBox控制項用來控制onKey()方法的返回值,最下方的TextView控制項用來顯示按鍵事件的詳細信息,包括按鍵動作、按鍵代碼、按鍵字元、UNICODE編碼、重復次數、功能鍵狀態、硬體編碼和按鍵標志。
界面的XML文件的代碼如代碼清單2所示
代碼清單2 界面XML文件
<EditText android:id="@+id/entry"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</EditText>
<CheckBox android:id="@+id/block"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回true,阻止將按鍵事件傳遞給界面元素" >
</CheckBox>
<TextView android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鍵事件信息" >
</TextView>
在EditText中,當任何一個鍵按下或抬起時,都會引發按鍵事件。為了能夠使EditText處理按鍵事件,需要使用setOnKeyListener ()方法在代碼中設置按鍵事件監聽器,並在onKey()方法中添加按鍵事件的處理過程,代碼如代碼清單3所示。
代碼清單3 setOnKeyListener()
entryText.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
int metaState = keyEvent.getMetaState();
int unicodeChar = keyEvent.getUnicodeChar();
String msg = "";
msg +="按鍵動作:" + String.valueOf(keyEvent.getAction())+" ";
msg +="按鍵代碼:" + String.valueOf(keyCode)+" ";
msg +="按鍵字元:" + (char)unicodeChar+" ";
msg +="UNICODE:" + String.valueOf(unicodeChar)+" ";
msg +="重復次數:"+ String.valueOf(keyEvent.getRepeatCount())+" ";
msg +="功能鍵狀態:" + String.valueOf(metaState)+" ";
msg +="硬體編碼:" + String.valueOf(keyEvent.getScanCode())+" ";
msg +="按鍵標志:" + String.valueOf(keyEvent.getFlags())+" ";
labelView.setText(msg);
if (checkBox.isChecked())
return true;
else
return false;
}
在上述代碼中,第4行代碼用來獲取功能鍵狀態。功能鍵包括左Alt鍵、右Alt鍵和Shift鍵,當這3個功能鍵被按下時,功能鍵代碼metaState值分別為18、34和65;但沒有功能鍵被按下時,功能鍵代碼metaState值分別為0。
第5行代碼獲取了按鍵的Unicode值,而在第9行中,將Unicode轉換為了字元,顯示在TextView中。
第7行代碼獲取了按鍵動作,0表示按下按鍵,1表示抬起按鍵。第7行代碼獲取按鍵的重復次數,但當按鍵被長時間按下時,則會產生這個屬性值。
第13行代碼獲取了按鍵的硬體編碼,各硬體設備的按鍵硬體編碼都不相同,因此該值一般用於調試。
第14行獲取了按鍵事件的標志符。

Ⅳ android 判斷鍵盤彈出和消失的監聽事件的方法

原理:自定義布局的onSizeChanged()方法,在其中增加一個監聽介面,當軟鍵盤顯示或隱藏使得布局尺寸發生改變,就能捕獲到這個事件。

具體方法如下:
首先,在清單文件Manifest.xml中的對應的Activity標簽內設置
android:windowSoftInputMode=」adjustResize」
作用是當軟鍵盤顯示或隱藏時,該Activity主窗口總是會被調整大小以便留出軟鍵盤的空間。唯有這樣才能保證布局觸發onSizeChanged()方法。

然後,自定義一個布局,具體是RelativeLayout、LinearLayout或是其它的,根據實際情況而定,自定義的目的是在其onSizeChanged()方法中增加一個監聽介面。這里給出一個自定義RelativeLayout布局代碼:

public class CustomRelativeLayout extends RelativeLayout {

private OnSizeChangedListener listener;

public CustomRelativeLayout(Context context) {
super(context);
}

public CustomRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {

Log.d(TAG.CUSTOM_VIEW, 「onSizeChanged」);
super.onSizeChanged(w, h, oldw, oldh);
if (listener != null) {
listener.onSizeChanged(w, h, oldw, oldh);
}
}

public void setOnSizeChangedListener(OnSizeChangedListener listener) {
this.listener = listener;
}

/** * Activity主窗口大小改變時的回調介面(本示例中,等價於軟鍵盤顯示隱藏時的回調介面) */
public interface OnSizeChangedListener {
public void onSizeChanged(int w, int h, int oldw, int oldh);
}
}

最後,在程序中使用此介面(xxx.setOnSizeChangedListener(…))即可實現監聽鍵盤隱藏或顯示事件。

Ⅳ 怎麼在android中實現一個按鈕的多個監聽事件

1、先申明一個監聽對象
2、不同按鈕設置同一個監聽對象
3、監聽中,通過按鈕的id判斷是哪個按鈕的點擊事件
代碼如下
1、new監聽
OnClickListener clickListener = new OnClickListener(){
@Override
public void onClick(View v) {
if (v.getId()==R.id.button1){//按鈕1
}else if(v.getId()==R.id.button2}{//按鈕2
}
}
2、設置監聽
Button btn1 = (Button)findViewById(R.id.button1);
Button btn2 = (Button)findViewById(R.id.button1);
btn1.setOnClickListener(clickListener);
btn2.setOnClickListener(clickListener);

Ⅵ android怎麼實現後台對按鍵事件的監控

遙控器按鍵事件這個不是在Android源碼的bootable下面ircon.c配置的么。比如:
{ .scancode = 0x0b, .mask = 0xaa0087ee,
.keycode = KEY_UP, .spec = IRCON_KEYCODE_NORMAL | IRCON_KEYCODE_LONGPRESS | IRCON_KEYCODE_MOUSEMD },
遙控器按鍵編號是「 0x0b」,給他的響應是「KEY_UP」,就是方向鍵的下,這個是在源碼里邊配置的。你必須要有遙控器的書名數,知道遙控器每個按鍵的編號,然後對應給他相應的響應才可以。
但是你要操控手機,你的手機必須要能接受遙控器信號,這個也是要硬體支持的,一般的手機貌似都沒有這個。
這個遙控的響應操作是驅動層做的,和應用層沒什麼關系,主要是驅動和硬體的支持。

Ⅶ 如何在android 中service後台監聽按鍵,比如監聽音量鍵

為了實現鍵盤的監控,從新開發一個輸入法是不現實的,一般的操作就是在系統的輸入法機制中添加介面回調。我們知道,再應用程序中拿到按鍵的回調一般是監聽onKeyDown的介面,如下所示:publicbooleanonKeyDown(intkeyCode,KeyEventevent)開發者就可以根據回調方法中的參數,keyCode與KeyEvent來判斷具體事件。但是,由於事件的回調機制在其的沙箱中運行,在其他應用中是無法拿到當前應用事件回調的。那麼我們就從上到下,具體的看看事件的傳遞機制。如下圖所示,用戶點擊後,軟鍵盤或物理按鍵的輸入驅動就會產生一個中斷,且向/dev/input/event*中寫入一個相應的信號量。Android操作系統則會循環的讀取其中的事件,再分發給WindowManagerServer。由WindowManagerServer根據事件的來源分發到各個不同的ViewGroup與View中,從而產生不同的OnClick、OnKeyDown和OnTouch等事件。這個時候很自然的想到,黑客們希望做鍵盤監控,一定會向Linux底層增加自定義的事件。這里我們使用的是Linux中的getevent獲得/dev/input/eventX設備匯報的事件,這個命令還會輸出所有event設備的基本信息。包括觸屏、按鍵、耳機插入等等。其基本用法如下:Usage:getevent[-t][-n][-sswitchmask][-S][-v[mask]][-d][-p][-i][-l][-q][-ccount][-r][device]-t:showtimestamps-n:don'tprintnewlines-s:printswitchstatesforgivenbits-S:printallswitchstates-v:verbositymask(errs=1,dev=2,name=4,info=8,vers=16,pos.events=32,props=64)-d:showHIDdescriptor,ifavailable-p:showpossibleevents(errs,dev,name,pos.events)-i:-l:-q:quiet(clearverbositymask)-c:-r:printrateeventsarereceived鍵入getevent後,我們能夠看到設備中的一些列輸入硬體驅動信息,同樣下面會出現很多輸入指令信號,通常情況下,這些信號量都在刷屏,如下圖所示:這些信號量的表示我們無法直接看懂,輸入getevent–l加入Label我們能夠看到一些添加的標簽,如下所示:其實這些Lable已經在其input.h頭文件中定義好,其中type的定義如下:/**Eventtypes*/#defineEV_SYN0x00#defineEV_KEY0x01#defineEV_REL0x02#defineEV_ABS0x03#defineEV_MSC0x04#defineEV_SW0x05#defineEV_LED0x11#defineEV_SND0x12#defineEV_REP0x14#defineEV_FF0x15#defineEV_PWR0x16#defineEV_FF_STATUS0x17#defineEV_MAX0x1f#defineEV_CNT(EV_MAX+1)一般來說,常用的是EV_KEY、EV_REL、EV_ABS、EV_SYN,分別對應鍵盤按鍵、相對坐標、絕對坐標、同步事件。EV_SYN則表示一組完整事件已經完成,需要處理,EV_SYN的code定義事件分發的類型。

Ⅷ 如何在Android的service里進行按鍵的監聽

app中對於HOME鍵廣播事件的接收

首先,自定義一個BroadcastReceiver:

[java] view plain
class HomeKeyEventBroadCastReceiver extends BroadcastReceiver {

static final String SYSTEM_REASON = "reason";
static final String SYSTEM_HOME_KEY = "homekey";//home key
static final String SYSTEM_RECENT_APPS = "recentapps";//long home key

@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_REASON);
if (reason != null) {
if (reason.equals(SYSTEM_HOME_KEY)) {
// home key處理點

} else if (reason.equals(SYSTEM_RECENT_APPS)) {
// long home key處理點
}
}
}
}
}
其次,生成且注冊之
[java] view plain
receiver = new HomeKeyEventBroadCastReceiver();
registerReceiver(receiver, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
這樣,我們就可以在app中進行HOME鍵的處理了!

Ⅸ android 中怎麼監聽按鍵的長按事件

長按事件一般是放到 onKeyLongPress 函數中來處理的。
那具體是怎麼做的呢,下面請看步驟:
第一步,先在 onKeyDown 函數中判斷 event.getRepeatCount 的次數(實際上長按就是由一系列的onKeyDown事件觸發的)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_UP:
if (mCameraAppView.getVisibility() != View.VISIBLE) {
return false;
}
Log.v(TAG,"onKeyDown event.getRepeatCount() "+event.getRepeatCount());
if (event.getRepeatCount() == 0) {
event.startTracking();
return true;
}
return true;
}
return super.onKeyDown(keyCode, event);
}
如果一直按著不放,通過打 log 可以看到
onKeyDown event.getRepeatCount() 0
onKeyDown event.getRepeatCount() 1
onKeyDown event.getRepeatCount() 2
onKeyDown event.getRepeatCount() 3
onKeyDown event.getRepeatCount() 4
onKeyDown event.getRepeatCount() 5
onKeyDown event.getRepeatCount() 6
onKeyDown event.getRepeatCount() 7
onKeyDown event.getRepeatCount() 8
onKeyDown event.getRepeatCount() 9
onKeyDown event.getRepeatCount() 10
onKeyDown event.getRepeatCount() 11
onKeyDown event.getRepeatCount() 12
……
第二步,重載 onKeyLongPressed 函數,在這個函數中你可以添加你的處理
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
Log.v(TAG,"key long pressed keyCode = "+keyCode);
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
Log.v(TAG,"KEYCODE_VOLUME_UP/DOWN long pressed");
lockLongPressKey = true;
onShutterButtonLongPressed();
return true;
default:
break;
}
return super.onKeyLongPress(keyCode, event);
}

第三步,如果在onKeyUp 函數中也處理了相同的按鍵的話,那麼需要對 onKeyLongPress 和 onKeyUp 中該按鍵的處理作互斥處理了
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
Log.v(TAG, "onKeyUp event.getRepeatCount() "+event.getRepeatCount());
if(lockLongPressKey){
lockLongPressKey = false;
return true;
}
if (event.getRepeatCount() == 0) {
Log.v(TAG, "prepare for onShutterButtonClick..");
if (mEnableRecordBtn && mReviewImage.getVisibility() != View.VISIBLE
&& mBgLearningMessageFrame.getVisibility() == View.GONE) {
if (mShutterButton != null && mShutterButton.isEnabled()) {
onShutterButtonFocus(false);
collapseCameraControls();//fulin@20121101@fix PD1218 B121027-224
onShutterButtonClick();
}
}
}
if (mCameraAppView.getVisibility() != View.VISIBLE) {
return false;
}
return true;
}
return super.onKeyUp(keyCode, event);
}

互斥處理的原因是,長按事件處理完後,松開按鍵後就會執行 onKeyUp 函數。而這兩處針對相同的按鍵想要實現的功能又不一樣
固在此添加一個 private boolean lockLongPressKey = false; 變數,在 onKeyLongPress 函數中處理過以後,在 onKeyUp中便不再處理。
2, button
自定義的 button 長按事件則是通過實現 OnLongClickListener 介面來做到的。
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MyActivity extends Activity implements OnLongClickListener{
Button button;//聲明按鈕的引用
public void onCreate(Bundle savedInstanceState) {//重寫的onCreate方法
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) this.findViewById(R.id.button);//得到按鈕的引用
button.setTextSize(20);
button.setOnLongClickListener(this);//注冊監聽
}
public boolean onLongClick(View v) {//實現介面中的方法
if(v == button){//當按下的是按鈕時
Toast.makeText(
this,
"長時間按下了按鈕",
Toast.LENGTH_SHORT
).show();//顯示提示
}
return false;
}
}

Ⅹ Android 中如何在Service中監聽按下的鍵是哪個鍵

rvice接收不到按鍵消息的。只有當前active的activity才能接受到按鍵消息。
非活動狀態的activity/service監聽按鍵消息?這種程序不就是盜取密碼的木馬程序了?不修改系統代碼做不到。
android系統的設計不允許用戶程序處理end
call,而只能選擇通過改變end
call鍵按下時的行為,這個行為定義在settings裡面。

熱點內容
編程找點 發布:2025-05-15 20:43:10 瀏覽:586
php上傳臨時文件夾 發布:2025-05-15 20:43:00 瀏覽:656
impala資料庫 發布:2025-05-15 20:42:12 瀏覽:648
android安裝插件 發布:2025-05-15 20:41:31 瀏覽:240
神秘顧客訪問 發布:2025-05-15 20:33:39 瀏覽:296
安卓市場手機版從哪裡下載 發布:2025-05-15 20:17:28 瀏覽:815
幼兒速演算法 發布:2025-05-15 20:15:08 瀏覽:87
best把槍密碼多少 發布:2025-05-15 20:13:42 瀏覽:548
android安裝程序 發布:2025-05-15 20:13:20 瀏覽:560
c語言跳出死循環 發布:2025-05-15 20:06:04 瀏覽:825