導航:首頁 > 操作系統 > android模擬電源鍵

android模擬電源鍵

發布時間:2022-09-28 17:34:05

1. android虛擬機創建打開後這樣子,除了電源鍵點啥都沒反應,6.0版本的

你這用什麼開發環境?現在最好用Android Studio。模擬器也最好用第三方的吧。比如什麼genymotion之類的。模擬器卡可能是沒有開硬體加速,也可能是電腦不行。一般用真機好一點。

2. 安卓模擬器怎麼鎖屏啊!誰知道,還有安卓模擬器的電源鍵是哪個

直接右上角關掉就行了,反正任務欄還在後台運行著。。。

3. hd2 卡上裝android系統後 電源鍵出來的選項 重新引導中 recovery 和hot restart有什麼區別

Hot restart應該是熱啟動的意思,就是在android系統下重啟後還是進入android系統。第一項Normal是正常重啟,重啟後進入的是WM系統,然後再手動切換到android系統下!

recovery應該是類似於恢復出廠設置的意思吧,但是我沒試過,不太確定!貌似模擬的android系統無法恢復出廠設置,因為恢復出廠設置過程要重啟,然後就直接到WM系統下了,再進入android系統沒什麼變化,畢竟是模擬的!要恢復的話,可能要重新刷下模擬的android系統。

4. android10編程如何摸擬電源鍵

有root可以用一鍵鎖屏軟體,加音量鍵喚醒。就可以代替了。現在的手機一般都有智能喚醒,你可以找找,就是雙擊喚醒和上滑喚醒

5. 安卓模擬器 如何配置 如何關機

關閉google更新忘了,關機長按電源鍵。點擊關機即可!
如無效,更換內核或者更換系統,推薦分區版、
ps;找不到內核我再發給你、

6. 安卓模擬器怎麼開機

這樣一直開不了。八成是你的api沒更新完全。 小部分可能是電腦自身的問題。。android 佔用內存很大。

7. 安卓手機如何設置電源鍵掛斷電話

若使用vivo手機,可以進入設置--(應用與許可權)--(系統應用設置)--電話--開啟「按電源鍵掛斷來電」,不支持通話中掛斷電話。
溫馨提示:開啟後,來電時第一次按電源鍵,可將來電置為靜音,第二次按電源鍵,可將來電掛斷,沒有此開關則代表不支持此功能。

8. 當我們按下電源鍵,Android 究竟做了些什麼

一、啟動電源及系統啟動

系統從 ROM 中開始啟動,載入引導程序到 RAM ,然後執行。

二、引導程序

引導程序是 Android 操作系統開始運行前的一個小程序,因此它需要針對特定主板與晶元,並不是 Android 操作系統的一部分。引導程序是OEM廠商或運行商進行加鎖、限制的地方。

1、兩個階段 檢測外部 RAM 以及為第二階段載入程序; 設置網路、內存等,搭建內核運行環境(為了達到特殊目的時,引導程序可以根據配置參數或者輸入數據來設置內核)。 2、引導程序的載入器

Android引導程序可以在ootableootloaderlegacyusbloader找到,傳統的載入器包含的兩個文件:

init.s 初始化堆棧,清零BSS段,會調用 main.c 中的 _main()函數 (bss segment:通常是指用來存放程序中未初始化的全局變數的一塊內存區域;BSS - Block Started by Symbol。BSS段屬於靜態內存分配); main.c 初始化硬體,創建 linux 標簽。 三、內核啟動

Android 內核啟動方式類似桌面 linux,主要步驟:

1. 設置緩存 2. 被保護存儲器 3. 計劃列表 4. 載入驅動

當內核完成系統設置,接下來即將啟動系統的第一個進程 —init 進程

四、init 進程

作為 Android 系統的第一個進程,其PID為0,通過解析 init.rc 腳本來構建出系統初始運行形態,這一階段中,「Android」 logo 會顯示出來。

備註:系統中,大多數系統服務程序都是在該腳本中描述並被相繼啟動的。

init.rc 由4種類型聲明組成:Actions、Commands、Services、Options

Actions: 響應某事件的過程。當「trigger」所描述的觸發事件產生時,則依次執行各種「command」; 源碼角度來看,系統會對 init.rc 中各「trigger」進行匹配,當發現符合條件的 Action,就將它加入「命令執行隊列」尾部(除非 Action 已存在隊列中),然後系統再對這些命令按順序進行。 on <trigger> ##觸發條件 <command1> ##執行命令 <command2> ##可執行多個命令 ... Commands: 命令將在所屬事件發生時被一個個執行。 Services: 可執行程序,它們在特定選項的約束下會被 init 程序運行或者重啟 備註:Service 可以在配置中指定是否需要退出重啟,那麼,當 Service 出現異常 crash 時,可有機會復原。 service <name><pathname> [<argument>]* <option> <option> Options: 對 service 的約束選項 五 &六、 ServiceManager、Zygote、SystemServer

科普: Daemons - 守護進程

init進程通過解析 init.rc 來陸續啟動其他關鍵的系統服務進程,其中最重要的是 ServiceManager、Zygote 和 SystemServer 三者,下面我們逐一解析:

1、ServiceManager — Binder 機制支撐者

概述:ServiceManager 是 Binder 機制中的支撐者,負責某 Binder 服務注冊信息到底層 Binder 驅動分配的值解析。

ServiceManager 由 init 進程解析 rc 腳本時啟動,屬於 core 類,其他同類進程包括:uenetd、console、adbd等。根據 core 組的特性,這些進程會同時啟動或停止。另外,ServiceManager 配置含有 critical 屬性,這意味著它是系統關鍵進程(如果進程不幸在4分鍾內異常退出超過4次,設備將重啟並進入還原模式)。當 ServiceManager 每次重啟時,其他關鍵進程:zygote、media、surfaceflinger 等也會被 restart。

2、Zygote — 「孕育」新線程與進程

Android 中大多數應用進程與系統進程都是通過 Zygote 來生成的。Zygote 同樣由 init 解析 rc 腳本時啟動,屬於 main 類,同屬 main 類的系統進程有:netd、debuggerd、rild等。Zygote並不是處於獨立的程序中的,它所在程序名為「app_process」,觀察 app_process 主函數實現知道,如果 init.rc 中指定了 —zygote選項,app_process 接下來將啟動「ZygoteInit」,並傳入「start-system-server」,這樣,ZygoteInit 就會運行在虛擬機上(Dalvik VM)上了。

ZygoteInit 函數有兩項重要工作:

預裝載各種系統類; 搭建 SystemServer 環境,並啟動 SystemServer(大部分的 Android 系統服務都在其中,由 Java 編寫)。

ZygoteInit 流程總結(摘自:Gityuan — Android 系統啟動-Zygote 篇):

解析init.zygote.rc中的參數,創建AppRuntime並調用AppRuntime.start()方法; 調用AndroidRuntime的startVM()方法創建虛擬機,再調用startReg()注冊JNI函數; 通過JNI方式調用ZygoteInit.main(),第一次進入Java世界; registerZygoteSocket()建立socket通道,zygote作為通信的服務端,用於響應客戶端請求; preload()預載入通用類、drawable和color資源、openGL以及共享庫以及WebView,用於提高ap啟動效率; zygote完畢大部分工作,接下來再通過startSystemServer(),fork得力幫手system_server進程,也是上層framework的運行載體; zygote功成身退,調用runSelectLoop(),隨時待命,當接收到請求創建新進程請求時立即喚醒並執行相應工作。

ZygoteInit 結束後,開機Logo就出來了。 注意:這里並不包括開機動畫,而是開機前 「Android」 Logo 出現的那個畫面,開機動畫出現之前還需要進行各種載入,開機動畫是在「Android」 Logo 出現之後才播放的。

3、SystemServer — 大部分 Android 系統服務所在地

SystemServer 是 Android 進入 Launcher 前的最後准備,它提供了眾多的由「Java」語言編寫的系統服務。 如果 init.rc 中為 zygote 指定啟動參數 —start-system-server,那麼 ZygotyeInit 就會調用 startSystemServer 來進入 SystemServer。

startSystemServer函數解析:

首先 ZygoteInit 通過 Zygote.forkSystemServer 來生成一個新的線程(fork),用於承載各種系統服務。(源碼角度:Zygote 內部由 Native 函數 Dalvik_dalvik_system_Zygote_forkSystemServer 來進一步實現,最終調用底層介面的 fork 介面來實際產生進程); 根據fork特性,子進程與父進程將獲得相同的代碼環境。pid為0為子進程,否則為父進程;如果是前者,則進一步調用 handleSystemServerProcess(parseArgs)函數來完成最核心的工作 —「啟動各系統服務」(源碼角度:handleSystemServerProcess 方法將 startSystemServer 中的 parsedArgs.remainingArgs 參數傳給 RuntimeInit.zygoteInit,後者又調用 nativeZygoteInit 函數); nativeZygoteInit 調用後,接著,三個重要的 static 函數就要被執行了:init1 - 完成本地Service(SurfaceFlinger、AudioFlinger等)啟動,完成後調用 init2、init2 - 新建一個新的帶 Looper 的線程 ServerThread來啟動 Java層各 Service。

9. android物理鍵

* Android常用的物理按鍵及其觸發事件
* KEYCODE_POWER 電源鍵
* KEYCODE_MENU 菜單鍵
* KEYCODE_BACK 後退鍵
* KEYCODE_HOME Home鍵
* KEYCODE_CAMERA 相機鍵
* KEYCODE_SEARCH 查找鍵
* KEYCODE_VOLUME_UP 音量鍵+
* KEYCODE_VOLUME_DOWN 音量鍵-
* KEYCODE_VOLUME_MUTE 靜音
* 方向鍵
* KEYCODE_DPAD_CENTER
* KEYCODE_DPAD_UP
* KEYCODE_DPAD_DOWN
* KEYCODE_DPAD_LEFT
* KEYCODE_DPAD_RIGHT
* 鍵盤鍵
* 數字0~9 字母A~Z
* KEYCODE_0 ~ KEYCODE_9
* KEYCODE_A ~ KEYCODE_Z
* 提供的回調方法有
* onKeyUp()、OnKeyDown()、onKeyLongPress()
*
* @author Administrator
*
*/
public class MainActivity extends Activity {

private Button btnClose = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnClose = (Button) findViewById(R.id.btnClose);
btnClose.setOnClickListener(new closelistener());
}

class closelistener implements OnClickListener {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}

}

/**
* 重寫onKeyDown方法可以攔截系統默認的處理
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
Toast.makeText(this, "後退鍵", Toast.LENGTH_SHORT).show();
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
Toast.makeText(this, "聲音+", Toast.LENGTH_SHORT).show();
return false;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
Toast.makeText(this, "聲音-", Toast.LENGTH_SHORT).show();
return false;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) {
Toast.makeText(this, "靜音", Toast.LENGTH_SHORT).show();
return false;
} else if (keyCode == KeyEvent.KEYCODE_HOME) {
Toast.makeText(this, "Home", Toast.LENGTH_SHORT).show();
return true;
}
return super.onKeyDown(keyCode, event);
}

/**
* 重寫onTouchEvent方法可以處理Touch事件
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if (event.getAction() == MotionEvent.ACTION_MOVE) {
Toast.makeText(this, "ACTION_MOVE", Toast.LENGTH_SHORT).show();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
Toast.makeText(this, "ACTION_MOVE", Toast.LENGTH_SHORT).show();
} else if (event.getAction() == MotionEvent.ACTION_DOWN) {
Toast.makeText(this, "ACTION_MOVE", Toast.LENGTH_SHORT).show();
}
return super.onTouchEvent(event);
}

}

更多的事件可以參考SDK文檔的MotionEvent、KeyEvent兩個類,在KeyEvent中如果處理了KeyEvent.KEYCODE_BACK事件,那就不會執行默認的操作,比如收到KeyEvent.KEYCODE_BACK事件後默認是退出,如果直接return那就不會處理退出了。

閱讀全文

與android模擬電源鍵相關的資料

熱點內容
收磚機石獅編程培訓廠家 瀏覽:761
吉里吉里2安卓模擬器怎麼用 瀏覽:818
編譯器將匯編代碼 瀏覽:681
電路板加密錯誤 瀏覽:21
java自動機 瀏覽:363
相機連拍解壓 瀏覽:31
linuxssh服務重啟命令 瀏覽:330
茂名氫氣隔膜壓縮機 瀏覽:47
程序員地鐵寫程序 瀏覽:330
java的switchenum 瀏覽:329
pdf瓷器 瀏覽:905
怎樣用adb命令刷機 瀏覽:962
蘋果手機怎麼買app 瀏覽:303
如何找到伺服器連接地址 瀏覽:776
重慶百望伺服器地址 瀏覽:227
python中range後的結果 瀏覽:101
編譯器管理的存儲有哪些 瀏覽:956
顯控觸摸屏與單片機通信 瀏覽:426
宅之便利店app怎麼使用輕應用 瀏覽:320
去外國怎麼下載外國app 瀏覽:269