保持平板平放在桌面上,將后置攝像頭保持在平板的左上后方,或者右上后方,此為機器的正方向
1、以一臺重力方向正常的機器做測試,通過DeviceInfoHw這個軟件的加速度測試功能【Accelerometer Test】我們可以知道
X方向數據測試:
將機器右側抬起,以平板左邊框為軸轉動,發現X的數據從0開始逐漸增大,從0不斷增加到10左右
將機器左側抬起,以平板右邊框為軸轉動,發現X的數據從0開始逐漸減小,從0不斷減小到-10左右Y方向數據測試:
將機器頂部抬起,以平板下邊框為軸轉動,發現Y的數據從0開始逐漸增大,從0不斷增加到10左右
將機器底部抬起,以平板上邊框為軸轉動,發現Y的數據從0開始逐漸減小,從0不斷減小到-10左右Z方向數據測試:
將機器正放,屏方向朝上,發現Z數據是10
將機器反放,屏方向朝下,發現Z數據是-10
2、接下來我們拿到一臺重力方向不正確的機器來調試,我們同樣打開DeviceInfoHw-傳感器-加速規(Accelerometer Test)界面進行調試:
2.1純文字測試記錄結果:
X方向:
我們將機器右側抬起,以平板左邊框為軸轉動,發現X的數據不變,Y的數據卻從0不斷減小為負值,那么說明Y的數據應該是X的才對,并且其數值應該也要取反Y方向:
我們將機器頂部抬起,以平板下邊框為軸轉動,發現Y的數據不變,X的數據卻從0不斷增大為正值,那么說明X的數據應用是Y的才對,并且其數值方向正確,無須取反處理Z方向:
我們將機器反放,屏方向朝下,Z的數據為-11.1,與上述測試結果作比較,說明當前測試機器Z方向的數據是正確的
2.2 圖文測試記錄結果:
X方向測試:
X方向:
我們將機器右側抬起,以平板左邊框為軸轉動,發現X的數據不變,Y的數據卻從0不斷減小為負值,那么說明Y的數據應該是X的才對,并且其數值應該也要取反
Y方向測試:
Y方向:
我們將機器頂部抬起,以平板下邊框為軸轉動,發現Y的數據不變,X的數據卻從0不斷增大為正值,那么說明X的數據應用是Y的才對,并且其數值方向正確,無須取反處理
Z方向測試:
Z方向:
我們將機器反放,屏方向朝下,Z的數據為-11.1,與上述測試結果作比較,說明當前測試機器Z方向的數據是正確的
3、根據以上測試結果我們直接去修改bsp中對應文件上報數數據部分代碼即可
diff --git a/bsp/modules/input/misc/sc7a20/sc7a20.c b/bsp/modules/input/misc/sc7a20/sc7a20.c
index 7acb52dd8a..c76fc8fb17 100755
--- a/bsp/modules/input/misc/sc7a20/sc7a20.c
+++ b/bsp/modules/input/misc/sc7a20/sc7a20.c
@@ -2600,8 +2600,8 @@ static void sc7a20_acc_report_values(struct sc7a20_acc_data *acc, int *xyz)input_report_abs(acc->input_dev, ABS_Y, -xyz[1]); input_report_abs(acc->input_dev, ABS_Z, -xyz[2]);#else
- input_report_abs(acc->input_dev, ABS_X, xyz[1]);
- input_report_abs(acc->input_dev, ABS_Y, xyz[0]);
+ input_report_abs(acc->input_dev, ABS_X, xyz[0]);//xyz[0] --<A1><B7> -xyz[1])
+ input_report_abs(acc->input_dev, ABS_Y, -xyz[1]);//xyz[1] --<A1><B7> -xyz[0])input_report_abs(acc->input_dev, ABS_Z, -xyz[2]); #endif