音量下鍵和電源鍵截圖心得記錄
按鍵先在PhoneWindowManager.java處理。
音量鍵:
case KeyEvent.KEYCODE_VOLUME_DOWN: case KeyEvent.KEYCODE_VOLUME_UP: case KeyEvent.KEYCODE_VOLUME_MUTE: { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { if (down) { if (interactive && !mScreenshotChordVolumeDownKeyTriggered && (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) { mScreenshotChordVolumeDownKeyTriggered = true; mScreenshotChordVolumeDownKeyTime = event.getDownTime(); mScreenshotChordVolumeDownKeyConsumed = false; cancelPendingPowerKeyAction(); interceptScreenshotChord(); } } else { mScreenshotChordVolumeDownKeyTriggered = false; cancelPendingScreenshotChordAction(); } }
power鍵:
其中 interceptScreenshotChord();就是控制截圖的程式碼if (interactive && !mScreenshotChordPowerKeyTriggered && (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) { mScreenshotChordPowerKeyTriggered = true; mScreenshotChordPowerKeyTime = event.getDownTime(); interceptScreenshotChord(); }
private void interceptScreenshotChord() { if (mScreenshotChordEnabled && mScreenshotChordVolumeDownKeyTriggered && mScreenshotChordPowerKeyTriggered && !mScreenshotChordVolumeUpKeyTriggered) { final long now = SystemClock.uptimeMillis(); if (now <= mScreenshotChordVolumeDownKeyTime + SCREENSHOT_CHORD_DEBOUNCE_DELAY_MILLIS && now <= mScreenshotChordPowerKeyTime + SCREENSHOT_CHORD_DEBOUNCE_DELAY_MILLIS) { mScreenshotChordVolumeDownKeyConsumed = true; cancelPendingPowerKeyAction(); mHandler.postDelayed(mScreenshotRunnable, getScreenshotChordLongPressDelay()); } } }
為了防止截圖的時候音量下鍵生效出現調節音量的dialog,有
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
&& mScreenshotChordVolumeDownKeyConsumed) {
if (!down) {
mScreenshotChordVolumeDownKeyConsumed = false;
}
return -1;
}
以上是原始碼,如果要將組合鍵改為power鍵和home鍵:
在監聽到home鍵的地方加:
if (isScreenOn() && !mBackBtnDownKeyTriggered
&& (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) {
mBackBtnDownKeyTriggered = true;
mBackkeyTime = event.getDownTime();
mBackDownKeyConsumedByScreenshotChord = false;
cancelPendingPowerKeyAction();
interceptScreenshotChord();
}
}
interceptScreenshotChord();裡面的方法改為:
if (mBackBtnDownKeyTriggered && mScreenshotChordPowerKeyTriggered ) {
final long now = SystemClock.uptimeMillis();
//android.util.Log.i("cenon","interceptScreenshotChord mBackkeyTime="+mBackkeyTime+" now="+now+" mScreenshotChordPowerKeyTime="+mScreenshotChordPowerKeyTime);
if (now <= mBackkeyTime+ SCREENSHOT_CHORD_DEBOUNCE_DELAY_MILLIS
&& now <= mScreenshotChordPowerKeyTime + SCREENSHOT_CHORD_DEBOUNCE_DELAY_MILLIS) {
//android.util.Log.i("cenon","mScreenshotRunnable post");
mBackDownKeyConsumedByScreenshotChord = true;
cancelPendingPowerKeyAction();
mHandler.postDelayed(mScreenshotRunnable,
ViewConfiguration.getGlobalActionKeyTimeout());
}
}
為了防止截圖的時候音量下鍵生效出現調節音量的dialog,新增:
if (keyCode == KeyEvent.KEYCODE_HOME
&& mBackDownKeyConsumedByScreenshotChord
&& android.provider.Settings.System.getInt(mContext.getContentResolver(), "home_button_layout_flag", 0) == 0) {//modified by wangyouyou
if (!down) {
mBackDownKeyConsumedByScreenshotChord = false;
}
return -1;
}
其實就是仿造原始碼寫,當然擡手的時候要將相應的boolen值改為false
注:對音量鍵的控制實際在PhoneWindow.javaprotected boolean onKeyUp(int featureId, int keyCode, KeyEvent event) {
final KeyEvent.DispatcherState dispatcher =
mDecor != null ? mDecor.getKeyDispatcherState() : null;
if (dispatcher != null) {
dispatcher.handleUpEvent(event);
}
//Log.i(TAG, "Key up: repeat=" + event.getRepeatCount()
// + " flags=0x" + Integer.toHexString(event.getFlags()));
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN: {
final int flags = /*AudioManager.FLAG_PLAY_SOUND |*/ AudioManager.FLAG_VIBRATE // delete by csc
| AudioManager.FLAG_FROM_KEY;
// If we have a session send it the volume command, otherwise
// use the suggested stream.
if (mMediaController != null) {
mMediaController.adjustVolume(0, flags);
} else {
MediaSessionLegacyHelper.getHelper(getContext()).sendAdjustVolumeBy(
mVolumeControlStreamType, 0, flags);
}
return true;
}
case KeyEvent.KEYCODE_VOLUME_MUTE: {
// Similar code is in PhoneFallbackEventHandler in case the window
// doesn't have one of these. In this case, we execute it here and
// eat the event instead, because we have mVolumeControlStreamType
// and they don't.
getAudioManager().handleKeyUp(event, mVolumeControlStreamType);
return true;
}
相關推薦
音量下鍵和電源鍵截圖心得記錄
按鍵先在PhoneWindowManager.java處理。 音量鍵: case KeyEvent.KEYCODE_VOLUME_DOWN: case KeyEvent.KEYCODE_VOLUME_UP: case KeyE
jQuery模擬按下回車鍵和f11鍵
眾所周知easyui 的Pagination中要想跳轉到某一頁,只需要輸入頁碼按ENTER就能達到效果。前段時間的專案 客戶提出要求說想要輸入頁碼 按一個GO的按鈕做跳轉。好吧,客戶是上帝,他們怎麼說我們這些程式猿只能儘自己所能來達到效果。如圖:
鍵盤沒有Home鍵和End鍵的完美解決辦法
zha image 鉤子 正常 ctr 自己的 ctrl+h end alt 最近新入手一個筆記本,發現鍵盤沒有Home/End,這兩個鍵雖然不是必用,但也是用順手了,特別是選擇一行,到行首,行尾的時候甚是方便 作為一枚程序員,怎麽能夠妥協? 於是開始研究 方案一
關於主鍵和外鍵
主表 通過 更新 控制 數據緩沖 計算機 wid 但是 detail 數據庫主鍵和外鍵 1 什麽是主鍵 外鍵 學生表(學號,姓名,性別,班級) 學號是一個主鍵 課程表(課程號,課程名,學分) 課程號是一個主鍵 成績表(學號,課程號,成績)
SQL server :主鍵和外鍵
技術分享 div 標識 reference create reat 按鈕 sse 是的 1.定義 1.1 什麽是主鍵和外鍵 1.2 主鍵和外鍵的作用 1.3 主鍵、外鍵和索引的區別 2.主鍵(primary key) 2.1 通過SSMS設置主鍵 2.2 通過SQL語
關於 主鍵和外鍵
tick not null 規則 更新 主鍵 join table 插入 out SQL的主鍵和外鍵的作用: 外鍵取值規則:空值或參照的主鍵值。 (1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。 (2)更新時,不能改為主鍵表中沒有的值。 (3)刪除主鍵表記錄時,你可
如何在Windows下安裝MYSQL,並截圖說明
family CP 選擇 查找 報錯 mage 端口號 ron 訪問 說明 : window 下安裝 mysql 雖然簡單,但是細節不註意就會安裝失敗,特別是配置服務器時,Current Root Password:為空;如果輸入密碼了在後面安裝會報錯。(不知道設置這個密碼
MySQL資料庫中主鍵和外來鍵的操作
在MySQL資料庫中,一般會涉及到主鍵和外來鍵,在上一個表中添加了主鍵之後,通常在下一個表中要新增外來鍵,但是添加了外來鍵之後,在實體類和資料庫中在加上上一個表的主鍵會比較好,這樣兩個表關聯之後,在上一個表查詢完成之後,將查詢是出來的欄位拿著去下一個庫裡查詢,會比較好。 select * fro
SQL的主鍵和外來鍵約束
SQL的主鍵和外來鍵的作用: 外來鍵取值規則:空值或參照的主鍵值。
第一篇:UE4如何輸出全景圖,和自定義截圖
首先,向大家介紹一下UE4的兩種輸出全景圖的方法,一種是利用UE4自帶的輸出外掛,一種是NVIDIA的外掛 一、UE4自帶外掛 1、開啟Edit——>Plugins,選擇Stereo Panoramic Movie Capture外掛匯入 2、執行專案,
資料庫主鍵和外來鍵及索引
1、主鍵: 若某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就是一個主鍵。主鍵不能重複,且只能有一個,也不允許為空。定義主鍵主要是為了維護關係資料庫的完整性。 2、外來鍵: 外來鍵用於與另一張表的關聯,是能確定另一張表記錄的欄位。外來鍵是另一個表的主鍵,可以重
vi編輯器方向鍵和backspace鍵顯示不正常的解決辦法和ubuntu的root密碼
網上看了很多方法,最簡單粗暴的莫過於改vim的配置檔案。方法如下: 首先改配置檔案要先切換到root賬戶,而今天使用ubuntu時想起來自己並沒有建立root賬號,更不用說密碼了。 然後我們只需要輸入 sudo passwd root 然後按提示輸入賬戶密碼,設定ro
selenium下對指定元素進行截圖
Selenium本身是可以支援截圖的,包括全屏和元素的截圖;只是對於不用的瀏覽器的相容性有差異而已。 具體差異如下: Chrome FireFox IE Edge PhantomJS 全屏截圖 可視區域 可視區域 可視
多次點選camera鍵或者電源鍵 調起app
當時這個需求是,連續點選camera鍵啟動掃碼app。由於怕和其他app共享一個廣播,所以自己定義了一個廣播 ACTION_CAMERA_BUTTON.DC 掃碼app監聽ACTION_CAMERA_BUTTON.DC這個廣播。 修改檔案 frameworks/base/p
一個Linux下的adb 安卓截圖指令碼
最近在真機除錯安卓,由於每次截圖儲存到電腦都要adb shell、adb pull,並且由於用的同一個命名導致後面的截圖會把前面的覆蓋掉,非常麻煩,因此寫了一個Linux下的通用指令碼,明顯提高了效率。
android螢幕和view的截圖
整個activity或者View元件顯示的內容可以通過cache機制儲存為bitmap, 使用到的api有 void setDrawingCacheEnabled(boolean flag), Bitmap getDrawingCache(boolea
關於資料庫主鍵和外來鍵(終於弄懂啦)
一、什麼是主鍵、外來鍵: 關係型資料庫中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為一個主鍵比如學生表(學號,姓名,性別,班級) 其中每個學生的學號是唯一的,學號就是一個主鍵課程表(課程編號,課程名,學分) 其中課程編號是
SQL SERVER 主鍵和外來鍵中的 級聯刪除(ON DELETE CASCADE)和級聯更新(ON UPDATE CASCADE)
建立學生表 create table gh_student( stuno varchar(3) primary key, stuname varchar(4), stuclass varchar(3) ) 插入資料 insert into gh_student values
主鍵和外來鍵
1.定義 1.1 什麼是主鍵和外來鍵 1.2 主鍵和外來鍵的作用 1.3 主鍵、外來鍵和索引的區別 2.主鍵(primary key) 2.1 通過SSMS設定主鍵 2.2 通過SQL語句設定主鍵 3.外來鍵(
SQL的主鍵和外來鍵的作用
SQL 的主鍵和外來鍵的作用:外來鍵取值規則:空值或參照的主鍵值 (1)插入非空值時,如果主鍵值中沒有這個值,則不能插入。 (2)更新時,不能改為主鍵表中沒有的值。 (3)刪除主鍵表記錄時,可以在建外來鍵時選定外來鍵記錄一起聯刪除還是拒絕刪除。 (4)更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。 簡而言之