通過藍芽將安卓手機模擬成PC賽車遊戲方向盤手柄

2022-07-06 17:51:12 字數 2551 閱讀 3574

前面的部落格《通過藍芽hid將安卓手機模擬成滑鼠和鍵盤》介紹了通過藍芽將android裝置模擬成滑鼠/鍵盤,但總歸是個副產品,因為我一開始的想法是將android機模擬成遊戲手柄或方向盤,最後陰差陽錯地實現了鍵鼠功能。經過一段時間的學習和研究後才實現了遊戲方向盤的功能,所以才有了本文。先來一張看看,裝置在《旋轉輪胎》(又叫spin tires)的控制選單中的效果。

如果我們的裝置成功被win10識別為遊戲控制器的話,在遊戲的控制設定頁面就會看到我們自己的裝置。那麼在遊戲控制頁面可以看見,選擇「方向盤」選項卡後出現方向盤裝置選擇的選單,點選我們的裝置名稱就可以使用了。(是用手機拍攝的,因為遊戲裡無法使用prt鍵截圖,有知道如何dx截圖的請指教)

下面看看遊戲方向盤的簡單demo,打方向需要左右轉動手機,左右兩邊的seekbar代表油門和剎車,中間的8個按鈕可以在遊戲的控制頁面設定不同的功能。離合器和換擋功能去掉了,測試發現還是自動擋開著舒服。力反饋ffb功能還在研究中。

下面看看在win10中被正確識別的裝置是什麼樣子的。

在遊戲的控制頁面我們可以看到方向是通過x軸控制的,在程式實現時我是用手機的重力感測器獲取手機轉動的角度。**的設定是,當手機逆時針轉動85度輪胎就會向左打死,順時針85度向右打死,-84~84度按比例鎖定方向,不會像鍵盤的左右鍵那樣要麼向左打死或者向右打死。

1

/**初始化感測器

*/2 sensormanager = (sensormanager) this

.getsystemservice(context.sensor_service);

3 sensor =sensormanager.getdefaultsensor(sensor.type_magnetic_field);

4 accelerometersensor =sensormanager.getdefaultsensor(sensor.type_accelerometer);

5 sensormanager.registerlistener(this

, sensor, sensormanager.sensor_delay_normal);

6 sensormanager.registerlistener(this, accelerometersensor, sensormanager.sensor_delay_normal);

1

/**感測器事件onsensorchanged */2

double anglerate = 1000/85;

3int latestangle = 0;

4@override

5public

void

onsensorchanged(sensorevent event)

9if (event.sensor.gettype() ==sensor.type_accelerometer)

1314 sensormanager.getrotationmatrix(rarr, null

, garr, geomagneticarr);

15sensormanager.getorientation(rarr, valuesarr);

16double degreex= (int)math.todegrees(valuesarr[1]);

17int angle = (int)math.round(-degreex*anglerate);

18 angle = angle>1000?1000:angle;

19 angle = angle

20if(angle !=latestangle)26}

27 }

油門和剎車目前就簡單使用seekbar來實現

1 seekbar.onseekbarchangelistener seekbarchangelistener = new

seekbar.onseekbarchangelistener()

7int val =progress;

8switch

(seekbar.gettag().tostring())917

}18 @override public

void

onstarttrackingtouch(seekbar seekbar)

19 @override public

void

onstoptrackingtouch(seekbar seekbar)

20 };

《通過藍芽hid將安卓手機模擬成滑鼠和鍵盤》+《通過藍芽將安卓手機模擬成pc賽車遊戲方向盤手柄》雙原始碼:hiddroid.rar + hidjoystick.rar

僅通過藍芽HID將安卓9 0模擬成滑鼠和鍵盤

bluetoothhiddevice android.bluetooth.bluetoothhiddevice是完成任務的核心類。通過它將我們的應用註冊成具有hid特徵的藍芽裝置,並傳送hid裝置的報告描述符。如果我們的報告描述符沒有問題,那麼我們的裝置就會成功模擬想要的hid裝置。碼磚思路 首先將...

安卓手機通過wifi變成電腦的外接音箱

昨天音箱線不小心被我扯斷了,在新音箱沒有到來之前只能默默尋求別的替代方法了,突發奇想,我的手機能不能當音箱那?網上搜搜還真可以 原理上是可以的,電腦和手機都安裝特定的軟體,通過wifi進行點對點的音訊流交換。理論上而言,你能想到的,別人也可以想到。所以上網搜尋了一下,還真的有這樣的軟體,並且是免費的...

木馬通過修改手機ROOT工具攻擊安卓裝置

日前,palo alto networks公司安全研究人員wenjun hu,claud xiao 和 zhi xu發現了一款新型木馬rootnik,通過使用商業root工具獲取手機root訪問許可權,進而獲取安卓裝置的敏感資訊,並影響範圍甚廣。什麼是rootnik rootnik使用一款定製的ro...