爬文有的說要抓著手機繞8字,有的說抓一款GPS State的軟體來做校正。做了這些...好像通通都沒有作用...
實際上繞8應該是指歸零地磁感應器。而所有付校正功能的軟體。ClinoMeter也好GPS Status也好,應該都只是校正軟體自身的設定,而不是去校正手機本身Global的設定。

這就是偏移量,正常的應該是垂直於地面。
也發現無論是從古早的X10,一直到現在的XT,幾乎每一款都有人反應過相同的問題。
但由於:
1.很多人不大玩遊戲
2.覺得賽車就歪歪的開也沒差
3.真的愛玩的人乾脆去買手把
等等因素,導致這個問題一直沒有受到重視。
但我不會每次出門都帶手把...
在我的觀點,如果廠商知道這種狀況不是個案,是不是也應該提供官方的校正功能給消費者呢?
HTC跟三星都把重力感應校正功能放進設定裡,就已經說明了,這個修正值並不是恆常不變,同一款晶片就全都一樣。而是每一顆都有個體差異。
就我的理解,每個重力感應器出廠時就不是準確的。一般都會在系統裡放上一個修正檔,讓感應器啟動時去讀這個檔案,抓到正確的重力軸線。
Sony的晶片是台灣應美盛生產的。
而我們的手機也有這樣一個修正檔,他就在根目錄的Data/misc/akm_set.txt。
大多數安卓手機的重力感應器設定檔都在這個位置,但每家的檔案名稱好像不大一樣。我猜這可能跟感應器的供應商有關。

檔案的內容大概是長這樣。
內容是這樣的:
HSUC_HDST_FORM0 = 3
HSUC_HO_FORM0.x = 107
HSUC_HO_FORM0.y = 2354
HSUC_HO_FORM0.z = -5940
HFLUCV_HREF_FORM0.x = 1090
HFLUCV_HREF_FORM0.y = 1523
HFLUCV_HREF_FORM0.z = -4638
HSUC_HBASE_FORM0.x = 0
HSUC_HBASE_FORM0.y = 0
HSUC_HBASE_FORM0.z = 0
HSUC_HDST_FORM1 = 0
HSUC_HO_FORM1.x = 0
HSUC_HO_FORM1.y = 0
HSUC_HO_FORM1.z = 0
HFLUCV_HREF_FORM1.x = 0
HFLUCV_HREF_FORM1.y = 0
HFLUCV_HREF_FORM1.z = 0
HSUC_HBASE_FORM1.x = 0
HSUC_HBASE_FORM1.y = 0
HSUC_HBASE_FORM1.z = 0
我試著去修改這裡面的每個值,但都無法修正我其中一個軸偏移0.6度的問題。
但這個檔案是確定對感應器有影響的。
假如我改變值的對應關係,重力感應會很乾脆的失去效用。
好比
HSUC_HO_FORM0.x = 107
HSUC_HO_FORM0.y = 2354
y值要比x值更大,假如我把兩數對調,那感應器就會無法啟動了。
我猜測從HSUC_HO_FORM0.x到HFLUCV_HREF_FORM0.z這六組數值,就是原廠的Offset值。
只是它在我的手機上設錯了!
可能在很多人的手機上也是。
這三個值應該是出廠前由SONY的工程師去做校正然後寫死在手機裡。而他們有一套校正軟體,把手機正面朝上做一次校正,再把手機正面朝下做一次校正。得到的就是這六組數值。這六組數值應該是三個三個一組,要對它做調整必須是全部一起調整。只調整一個是沒有效果的。
這是我的猜測,應該也是我試著去設定每個數值都沒有效果的原因。
而我的問題就是,我該怎麼去得到正確的數值,來修正我這個檔案呢?
或者校正重力感應器,在SONY手機上,有沒有什麼真正有效的辦法?