看板Soft_Job
: 目前想自行設計一個手機上用的sensor
: 前提是不希望動到手機的硬體
: 目前想到的途徑是藉由耳機孔的輸入(ex: 線控)
: 再利用app去處理sensor得到的訊號
: 但不知此途徑是否需要知道手機硬體的spec才可以著手
: 希望板友能提供任何相關的資訊
: 感謝指教
我提供一些Android相關經驗
因為你說不希望動到手機的硬體
但我不知道你是否能重包手機的image
能否porting driver
我猜應該也不行
以下先假設你沒辦法改image
你只是手機的user
而非手機開發商
你可以將你的sensor輸出
設計成跟按耳機按鍵一樣
將資料封包轉成0101110
再用有按跟沒按來發送
這樣就類似rs232只有一根tx
然後你只要寫一支Android APP
註冊耳機按鍵的通知
接著自行解讀出0101110
再還原成你原本的資料封包
這樣這支APP就可以讀到你sensor
當然耳機按鍵的通知
不太可能送太快(跟系統有關)
所以baud rate要定得非常低
不然我怕你還原不出來原始數據
簡單的講資料傳輸速度會非常慢
1秒有沒有1byte的解析度都不知道
所以非常不堪用
當然後遺症很多
會影響到原本聽這個key的人
還要處理是否是你的sensor
還是一般耳機
另外
這樣只有你的APP能讀到sensor
如果你希望別人的APP能用你的sensor
標準方法:
假設你的sensor
是android sdk標準support的sensor
port好一個hal層lib跟framework接起來
此lib再想辦法跟你的sensor接起來
再將lib丟到系統目錄
Zdevice之類的app就會發現這個sensor
當然手機要先root過才能裝起來
如果不是標準sdk support
你就必須是手機開發商才有機會
因為要改framework
並提供你修改過的android sdk給其他APP開發者
才有機會給別人使用
非標準方法:
1. 你提供lib(.so)或sample code給其他APP開發者
2. 你寫一個service讀sensor,再提供IPC的方法分享給其他APP
IPC有:
linux:socket, pipe, share memory, database, file..等
android:Service(Binder), Intent, ContentProvider, property..等
另外
可以考慮其他比較好用的做法
1.網路(需要掛OS)
2.BT
3.USB+adb(需要掛OS)
4.把自己當USB device
(手機晶片必須支援+porting driver..
基本上不是手機開發商應該不可行)
其中BT的硬體應該是最輕巧簡單的
應該很適合這個case
--
◆ From: 111.249.22.20
※ 批踢踢實業坊(ptt.cc)※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1331049396.A.F5A.html
推 whereweare:push!! 03/07 09:01
推 freedom76912:感謝! 但我沒做過那麼底層的事情XDD 如有需要希望能 03/07 10:54
→ freedom76912:與您做更深入的請教 03/07 10:55