Android手機中P-Sensor驅動開發除錯及功能介紹

近期由於剛換了新工作,好久沒有更新文章了,現在終於能抽出時間寫點東西了!先拿我們手機上都有的psensor開刀吧。

Psensor功能

Proximity Sensor就是接近感測器,也就是我們常說的PSensor,用於測量物體靠近或遠離手機,一般放置在手機螢幕的最上部位置。當物體接近PSensor時,PSensor的值會越來越大,當大於一定值(接近的門限值)時,就會上報接近事件給android;當物體再離開PSensor時,PSensor的值會越來越小,當小於一定值時(遠離的門限值)時,就會上報遠離事件給android。最後android根據上報的事件進行對應的處理(亮滅螢幕)。

Psensor主要應用場景

1. 手機鎖屏:

手機在鎖屏狀態下,為了防止在口袋中誤觸,被遮擋的情況下操作手機,會提示誤操作介面。

2. 打電話:

打電話時,如果手機靠近耳朵,PSensor檢測到接近手機狀態,關閉螢幕;當用戶從耳朵旁拿開手機,Psensor則檢測到遠離手機狀態,點亮螢幕。面上主流的智慧手機均包含了近距離感測器,防止使用者近耳接聽時觸碰到螢幕引發誤操作和降低功耗(LCD功耗還是很高的)。

......

當android手機進入以上場景時,會Enable PSensor,然後控制手機的亮滅屏。

PSensor校準

1) 為什麼要校準

Proximity Sensor工作時,即使沒有任何物體遮擋時,Proximity Sensor檢測到的raw data(原始資料)也會大於0,這個值我們稱之為crosstalk(底噪值)。所以,Proximity Sensor要正常工作,設定接近、遠離觸發門限時是需要考慮背景噪聲,以消除背景噪聲干擾,這個過程就叫做校準。

2) 如何校準

校準的實質就是獲取PSensor的底噪值。

靜態校準:

在生產時進行獲取底噪值並存入手機的NV分割槽(SMT校準),使用psensor時,讀取NV分割槽中的值,進行設定接近和遠離的閾值。就是一旦出廠校準完成,高低門限值ps_threshold_low和ps_threshold_high就是固定的。

優點:邏輯相對簡單 。

缺點:proximity sensor的底噪是變化的,會隨著手機使用過程變化,如使用者手機跌落導致proximity sensor結構密封性下降,光孔透光性變化,貼鋼化膜等等。所以,使用靜態校準,存在會導致proximity sensor接近、遠離觸發靈敏度降低,甚至失效的可能(一打電話就黑屏)。

動態校準:

指proximity sensor工作時的高低門限值ps_threshold_low和ps_threshold_high是動態的、實時的,每次開啟proximity sensor會實時讀取底噪,並基於底噪設定高低門限值ps_threshold_low和ps_threshold_high。

優點:可以規避固定門限校準的缺點。

缺點:邏輯相對固定門限校準複雜些,早期除錯工作量大些。開啟proximity sensor時,如果有物體遮擋proximity sensor光孔,這時獲取的底噪接近最大值,這樣會導致proximity sensor功能失效,不會觸發接近、遠離事件。

Android手機中P-Sensor驅動開發除錯及功能介紹