[Android] Joystick游戏手柄开发

news/2024/4/24 4:19:56/

原创文章转载请保留出处 http://blog.csdn.net/s278777851/article/details/6956226

 

设备: XOOM, 系统为Android3.2, 开发Joystick只要3.1以上就可以了

         OTG线一条, USB接口转换器, 可以把XOOM下面的USB口转成USB母口,可以插USB键盘,Joystick之类

         PS3游戏手柄, 测试成功的有 北通,Logitech, 手柄.

检测手柄的插入与拔出

根据Android文档介绍, 有两种方法检测USB设备插入

第一种, 在Manifest 里面加入

<manifest ...><uses-feature android:name="android.hardware.usb.host" /><uses-sdk android:minSdkVersion="12" />...<application><activity ...>...<intent-filter><action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /></intent-filter><meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"android:resource="@xml/device_filter" /></activity></application>
</manifest>

对应的device_filter.mxl

 

<?xml version="1.0" encoding="utf-8"?><resources><usb-device vendor-id="1234" product-id="5678" />
</resources>

其中, vendor-id 和 product-id 每个不同型号的手柄得到的值都是不一样的.具体获取方法下面会提到.

做好以上配置以后, 当设备插入的时候, 系统会弹出一个提示框, 询问你是否要打开这个程序.点击确定的话就会启动你的APP.

 

第二种方法. 遍历USB Device

 

UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
...
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while(deviceIterator.hasNext()){UsbDevice device = deviceIterator.next()int vendorId = device.getVendorId(); int productIt = device.getProductId();  如果是用第一种方法检测的话device_filter.mxl里面的两个值要填这两个
}

用这种遍历方法我是程序启动的时候起一条线程隔三秒检测一次, 检测到手柄后根据各自需求处理.

 

检测USB设备拔出:

usb设备拔出的时候会抛出一个action值为UsbManager.ACTION_USB_DEVICE_DETACHED的广播, 注册一个广播接收即可.

其实UsbManager还有一个UsbManager.ACTION_USB_ACCESSORY_ATTACHED的值,从文档上看意思是usb设备插入时候会有这个广播抛出,但是实际上却没有收到这个广播

 

事件捕获

按钮事件可以通过重写OnKeyDown和OnKeyUp捕获这些事件

if(event.getDevice() != null && event.getDevice().getSources() == 0x1000511){

     // 该事件来自Joystick

}

 

扫描码: int scanCode = event.getScanCode();

如果是Joystick的上下左右事件, scanCode 的值为0, 测试过10几款手柄,得到的数值都是

keyCode == 19   // 上

keyCode == 20   // 下

keyCode == 21   // 左

keyCode == 22   // 右

 

游戏手柄上左边蘑菇头的事件可以通过重写onGenericMotionEvent获得,

float x = event.getX(), float y = event.getY();   这些得到的数据都是坐标,具体数值是精确到小数点后9位

 

最后附上一个本人接好手柄后在XOOM上玩极品飞车14的视频.  http://www.tudou.com/programs/view/8TLNkvRgFoU/


测试代码下载:http://download.csdn.net/detail/s278777851/4160430

测试代码是抽离出来的, 暂时没有设备可以测试,不过大致的代码是没错的,希望对大家有帮助。


另外我再说明一下, 我这个程序只用过游戏手柄测试过,数据都能拿到, 其他usb如果android是有支持的应该也是可以拿到的,

之前有朋友加我的QQ说我的程序拿不到数据, 最后查出来是因为android不支持他的usb设备。如有问题,欢迎讨论。


2012/6/18更新:  因为有很多说设备拿不到数据. 目前通过加QQ沟通的朋友拿不到的主要有两个原因。

1. android 系统本身不支持特殊的设备,有时候虽然能够识别到,但不一定能够拿到productID和vectorId, 所以大家的测试的建议使用一些官方有说明支持的,我用游戏手柄测试的运气比较好,所有的手柄都是能拿到数据的。

2. android 设备和版本也有一定要求,有个朋友也说是拿不到数据,那个时候他用的平板是国产的某平板,后来他买了XOOM再测试的时候发现就能拿到了,所以这里建议大家使用一些官方的设备来做测试,xoom或者galaxy Tab(7寸除外,7寸GT不支持3.x) 都是不错的选择。


最近因为敢项目,无数个加班昼夜,所以留言都没能看到,在此向留言而没有加到QQ的朋友表示非常抱歉。  

 


http://www.ppmy.cn/news/216852.html

相关文章

【Unity3D】摇杆

1 需求实现 1&#xff09;需求实现 鼠标拖拽摇杆球控制坦克移动&#xff1b;上下左右按键也可以控制坦克移动&#xff0c;并且摇杆球也同步移动&#xff1b;鼠标右键滑动&#xff0c;控制坦克转向&#xff1b;相机在玩家后上方的位置&#xff0c;始终跟随玩家&#xff0c;朝玩…

unity3D摇杆

转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6961080 本章博文的目的是利用上一章介绍的游戏摇杆来控制人物模型的移动&#xff0c;与行走动画的播放。 如上图所示Create中的文件夹male中存放着模型动画与贴图等&#xff0c;这个应该是美…

手游摇杆(一)最简单的四方向摇杆

手游摇杆&#xff1a; (零)摇杆设计原理 (一)最简单的四方向摇杆 (二)八方向摇杆和移动范围限制 (三)跟随式摇杆 摇杆是所有手游中不可或缺的功能&#xff0c;是最基本的操作方式&#xff0c;下面用cococ creator实现的一个简单的摇杆&#xff0c;后续功能将基于此优化。 一 场…

【功能实现】手机游戏虚拟摇杆功能实现

【UNITY3D】 声明&#xff1a; 查API和根据自己的想法实现此功能。如果你喜欢我这个实现&#xff0c;希望你能有所收获&#xff0c;如果你能改进那就更棒了&#xff0c;但如果你想直接拿走&#xff0c;希望标明出处。 只需要把脚本交给画布下的空物体,自行自定义以下内容&…

GIN框架(GOLANG)讲解如何疯速入门

1.初始化项目&#xff1a; 1.初始化项目&#xff1a;go mod init 2.下载gin框架&#xff1a;go get -u github.com/gin-gonic/gin 3.引入&#xff1a;import "github.com/gin-gonic/gin" 注意点&#xff1a; 报错&#xff1a;$GOPATH/go.mod exists but should …

Js 游戏虚拟摇杆

首先说明是从这个大神这里看到的 https://blog.csdn.net/cdnight/article/details/50751832?locationNum3&fps1 一看之后下载资源需要30个币&#xff0c;而且下面的评论说资源不全&#xff0c;于是打消了下载csdn资源的念头了&#xff0c;其实自己也没币了&#xff0c; …

android studio游戏摇杆开发教程,仿王者荣耀摇杆

李子果 原创。。。 最近在做一个山寨版的王者荣耀&#xff0c;刚开始做的时候毫无头绪 摇杆的多点触控做的特别烂 经过几天的思考已完美解决所有问题&#xff0c;下面就和大家分享下这个摇杆的开发思路&#xff08;此教程不包含游戏源码&#xff09; 若有不正之处&#xff0…

游戏摇杆编程

文章目录 前言摇杆介绍技术特性 源程序获取摇杆功能信息获取摇杆当前状态 前言 基于前面几篇博文的介绍&#xff0c;我们可以进行编程&#xff0c;以获取游戏遥感所传回的数据。 前文回顾&#xff1a; WindowsAPI之joystickapi(游戏摇杆)头文件Windows API 之joystickapi(游戏…

Arduino简单实例之四_PS2游戏摇杆

1) 说明&#xff1a; PS2 游戏双轴摇杆传感器模块由采用金属 PS2 摇杆电位器制作&#xff0c;具有(X,Y)2 轴模拟输出&#xff0c;(Z) 1路按钮数字输出。可制作遥控器等互动作品。 SW引脚按下去时输出低电平&#xff0c;反之输出高电平 2) 硬件&#xff1a; PS2游…

Unity游戏摇杆解决方案--OneJoystick

Unity游戏摇杆解决方案–OneJoystick 通过摇杆的输入来控制玩家的移动是常见的游戏控制方案。目前市面上的遥感方案缺少具体的示例&#xff0c;有些方案功能又过于复杂。OneJoystick是一个相对来说轻量的遥感解决方案。它不需要特别设置Transform的pivot锚点&#xff0c;全部都…

【Unity插件】游戏摇杆Joystick

文章目录 前言一、Joystick摇杆类型二、摇杆基本属性三、摇杆使用方法四、其他功能及扩展总结 前言 最近开发很多游戏Demo中都有用到游戏摇杆Joystick。个人还是挺喜欢用这个插件的&#xff0c;很方便。今天在这里简单介绍一下。 一、Joystick摇杆类型 Joystick Pack包含多个…

操作系统(进程与线程,复习自用)

进程与线程 进程与线程进程的概念、组成、特征进程的状态与转换进程控制进程通信&#xff08;IPC&#xff09;线程概念 多线程模型线程的实现方式 多线程模型线程的状态与转换 CPU调度与上下文切换调度的概念、层次进程调度的时机 切换与过程调度方式调度器 闲逛进程调度算法的…

LeetCode 周赛 348(2023/06/05)数位 DP 模板学会了吗

本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 加入知识星球提问&#xff01; 往期回顾&#xff1a;LeetCode 单周赛第 347 场 二维空间上的 LIS 最长递增子序列问题 周赛 348 概览 T1. 最小化字符串长度&#xff08;Medium&…

索尼g8441是什么版本_复兴之路!索尼新机G8341/G8441现身波兰

虽然说索尼在手机业务方面没有像苹果三星一样顺风顺水&#xff0c;不过好歹索尼也是一个国际大厂。除了今年MWC大会上为消费者带了索尼Xzp等等机型外&#xff0c;还称将会在今年下半年为大家带来更多的旗舰。 目前&#xff0c;根据外媒gsmarena报道&#xff0c;在每年的IFA大会…

Sony索尼XZP(G8142)无GUG开启全局4K显示模式

连接手机&#xff0c;打开ADB&#xff08;ADB安装方法可自行搜索教程&#xff09; 1&#xff1a;输入命令 adb devices 回车键&#xff0c;会显示手机设备编号&#xff0c; 2&#xff1a;再输入 adb shell 回车键&#xff0c;会显示此机器型号 &#xff0c; 3&#xff1a;再…

索尼xzp升级android p,索尼XZ Premium国行正式推送安卓8.0更新!功能大升级

今日&#xff0c;索尼官方宣布&#xff0c;国行Xperia XZ Premium正式开始推送Android 8.0 Oreo更新。具体版本号为47.1.A.8.49&#xff0c;大小1075.3MB。 据悉&#xff0c;此次更新除了众多系统功能升级外&#xff0c;还增强了如下体验&#xff1a; 1、全新3D大师&#xff0c…

xz1推送android9.0,索尼XZ1/XZP港版正式推送Android 9.0更新 搭载4K HDR显示屏

上周索尼XZ1/XZ1 C台版两款手机终于迎来了Android 9.0的更新&#xff0c;在评论区里&#xff0c;有不少小伙伴抱怨港版的XZ1、XZP手机是“后娘养的”&#xff0c;迟迟不给更新。 现在&#xff0c;好消息来了&#xff0c;来自IT之家网友的线索投递&#xff0c;今天索尼Xperia XZ…

Xz1 android p更新,索尼XZ1/XZP港版正式推送Android 9.0更新

原标题&#xff1a;索尼XZ1/XZP港版正式推送Android 9.0更新 IT之家1月29日消息 上周索尼XZ1/XZ1 C台版两款手机终于迎来了Android 9.0的更新&#xff0c;在评论区里&#xff0c;有不少小伙伴抱怨港版的XZ1、XZP手机是“后娘养的”&#xff0c;迟迟不给更新。 现在&#xff0c;…

索尼xzp升级android p,索尼XZP国行版升级安卓8.0 相机功能优化

虽说索尼手机的系统在国内一直遭到用户诟病&#xff0c;体验方面也是不尽如人意&#xff0c;不过在更新上索尼还是十分厚道&#xff0c;一直在为国行系统提供最新的安卓系统体验。索尼官方宣布&#xff0c;国行Xperia XZ Premium正式开始推送Android 8.0 Oreo更新。具体版本号为…

Xz1 android p更新,终于等到:索尼XZ1/XZP港版正式推送Android 9.0更新

IT之家1月29日消息 上周索尼XZ1/XZ1 C台版两款手机终于迎来了Android 9.0的更新&#xff0c;在评论区里&#xff0c;有不少小伙伴抱怨港版的XZ1、XZP手机是“后娘养的”&#xff0c;迟迟不给更新。 现在&#xff0c;好消息来了&#xff0c;来自IT之家网友的线索投递&#xff0c…