Site Meter

2012年8月30日

Touchwake 的功能延伸

Touchwake 是在 Nexus S xda-developers 開發板上的一位著名的核心開發者 Ezekeel 所製作的核心功能。它的功能是在螢幕剛熄滅的前幾秒鐘內(秒數可自行指定)可以直接透過點觸控螢幕的方式把手機再度喚醒,而不需要透過電源鍵,這在閱讀或瀏覽網頁的時候相當方便,也可以避免長時間閱讀頻繁的壓電源鍵造成實體按鍵的耗損。
在 Nexus S 上,電源鍵是除了音量鍵外唯一的實體按鍵,要是電源鍵故障了的話,手機就不能正常使用了,因為如此一來你就不能把手機從睡眠中喚醒。而相信電源按鈕對於很多 Android 手機來說也都是扮演這樣的角色。
Touchwake 一直是我很喜歡的第三方核心功能之一,因為它讓我不必頻繁的按手機的電源鍵。然而前陣子有個想法,就是除了在螢幕剛熄滅後的時候我們可能會因為是讓螢幕不小心熄滅的而重新點亮螢幕以外,在手機收到通知而發出聲音的時候,我們也有很大的機率會需要把手機點亮來看看發生什麼事,或者進行回覆之類的。而這時要是可以用 Touchwake 點亮螢幕就太好了。
前兩天讀過 Touchwake 的原始碼對於 Touchwake 的運作原理了解了之後,我把它稍微修改改成了當手機在 suspend 狀態下開啟喇叭或振動器時,也會把 touchwake 打開,讓我們收到通知後可以直接透過 Touchwake 來點亮螢幕。目前看起來運作的不錯,基本上沒什麼問題,應該在這個週末放出的新版 vta2-kernel 內就會包含這項功能。只是這個功能有個漏洞,就是在手機被關成不震動也沒聲音的時候它會沒有作用,然後在放音樂時也是(因為播放音樂時手機喇叭是一直開著的)。這問題主要源自於核心層並沒有辦法直接判斷系統何時收到通知。然後我也沒加入對 Notification LED 的判斷,因為 Nexus S 本來就沒有 LED 燈嘛。
對於這個功能未來想做的部份,大概會加個開關然後把 sysfs interface 給弄出來,讓上層的 app 可以直接控制 Touchwake ,這樣 Touchwake 就可以做更靈活的運用了(雖然我不會寫 app)。然後就是或許還有什麼其他的在「某些特定條件」發生後人們會去打開手機的狀況,你可以告訴我,如果核心層可以做到的話,或許我可以把它加入 Touchwake 當中。
最後 Touchwake 應該滿容易被移植到不同機器的核心上的,不過 S2 的第三方核心上不知道有沒有這個東西?  Ezekeel 好像沒有在開發 S2 核心,不知道有沒有人把它移植過去了。

沒有留言:

張貼留言

請注意,在較舊的文章留言並不會馬上出現在回應區!