用 app finder 透過簡訊以 GPS 定位遺失的手機

google android 手機有一個功能,可以看到同一帳號下的手機 GPS 位置。 如果不想依靠 google 服務,或不想把自己的座標傳給 google 知道, 有人開發了可以達端取得裝置定位結果的 app, 方式就是用手機上最基本且通用的簡訊功能。 例如 finder 只要設好白名單, 用白名單中的號碼傳有關鍵字的簡訊給手機, 手機就會回傳 gps 定位的位置。

其實這類遠端定位手機的功能, 最重要的是要如何把定位結果回傳給不在手機旁的使用者。 google 這類大公司,android 是自行開發的, 裡面要塞什麼程式都可以。 google 自己再做一個平台,存這些定位資料供同一帳號的使用者存取。

但這類功能要由第三方實作就比較困難, 因為要架一個網站存這些資料有難度,而且還要使用者信任你。 而且這類使用者,應該也不會想用這種上傳自己定位資料的方式達成。 另外一種方式就是讓手機在接到指令時,回傳自己的座標, 關鍵就變成回傳的管道。

通訊管道

因為手機網路的特性多半都不是固定公網 ip, 直接溝通就變得很麻煩。 雖然說手機上有很多即時通訊軟體, 但要把整個系統依賴在一款通訊軟體上還是不好, 而且 im 並沒有真正統一,且多數普及的 im 都是商業公司把持, 不會允許使用者自定義這類接到訊息時做出動作的功能。 加上每個人慣用的 im 也不同,所以其實綁在 im 有困難。

手機上有一個優勢,不管是什麼手機, 都有基本的打電話和收發簡訊的功能, 而且 android 系統的特性,這種基本的功能都會做成 api, 讓 app 可以存取簡訊功能。 所以簡訊可以說是最基本的每台手機都有的功能, 用來當通訊管道倒是夠用。

finder 運作方式

這個 app 會在收到簡訊時檢查內容,如果內容是 gps_search , 就會把 gps 定位結果傳送回簡訊發訊人。 為了防止被無關的人亂傳訊息,還有白名單功能, 可以設定只回應特定號碼的訊息。 另外也可以更改關鍵字內容,改成只有自己知道的關鍵字。

此外也加了更多相關功能,例如 android 4.4 以上, 能讓 app 能管理 gps 的開關。 還有能回傳周圍的 wifi 熱點名稱,能在收到指令時關始響鈴等。 如果要讓 app 能開啟 gps,要用 adb 去手動允許權限, 也就是用 adb 開啟 shell 後,下指令: pm grant ru.seva.finder android.permission.WRITE_SECURE_SETTINGS

另及因為要手動發特定格式的簡訊很麻煩, 所以 app 裡也做了能發該格式簡訊的功能, 收到回傳的 gps 座標時,也能顯示在地圖上方便尋找。 (當然是 open street map。)

這個 app 目前只在 f-droid 上架, 以前有在 google play 上架過; 但後來 play store 的政策,只允許簡訊收發 app 存取簡訊權限, 而不允許其它無關的 app 使用簡訊權限, 所以這類用簡訊達成功能的 app 不能在 play store 上架。

使用者界面

app 開啟後,下半會分為二個欄位, 右邊會列出允許發送定位請求到這台手機的門號, 按最上方的 add new phone 可以把門號加到白名單裡。 點下方加入的手機號碼,則可以主動發出 gps 位置或是發出 wifi 名稱。 另外有一個 tracker 功能,可以用來主動定期發出 gps 位置, 但這功能不能遠端啟用,不知道為什麼會這樣設計。

左邊的欄位則是用來發簡訊用的, 你可以把把你加為白名單的手機放在這裡, 然後點擊該門號就會出現發出 gps wifi 請求簡訊的選單。 當然,不一定要用這個 app 裡的選單發, 直接用簡訊 app 發也可以。

最後,如果要測試功能正不正常, 可以發簡訊給自己來測試,但簡訊是要錢的。