Android怎么用代码连接蓝牙鼠标键盘同时使用手柄,键盘,鼠标

A2dp&:&&Advanced Audio Distribution Profile 蓝牙&音频传输模型协定
&&蓝牙立体声,和蓝牙耳机听歌有关那些,另还有个AVRCP--(&Audio/Video Remote Control Profile)&音频/视频远程控制配置文件,&是用来听歌时暂停,上下歌曲选择的
GATT:&&Generic Attribute Profile & 通用属性配置文件
& & & &&GATT是基于ATT Protocol的,&ATT针对BLE设备做了专门的优化,具体就是在传输过程中使用尽量少的数据。每个属性都有一个唯一的UUID,属性将以characteristics&and&services的形式传输
& & & &https://developer.bluetooth.org/TechnologyOverview/Pages/GATT.aspx
HDP&:&Bluetooth Health Device Profile&蓝牙关于医疗方面的应用&
HFP&:&Hands-free Profile &&和电话相关,蓝牙接听、挂断电话&
HID&:&&Human Interface Device &
& & & & &定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。该协议改编自USB HID Protocol
MAP&:&&Message Access Profile
OPP&: Object Push Profile
PAN&: Personal Area Network Profile
描述了两个或更多个 Bluetooth 设备如何构成一个即时网络,和网络有关的还有串行端口功能(SPP),拨号网络功能(DUN)
PBAP&:&Phonebook Access Profile&&电话号码簿访问协议
在setting界面点击连接,会调到CachedBluetoothDevice类的connect方法,调用 updateProfiles(),根据搜索到的device的uuid来向ProfilesList里添加profile,然后遍历
ProfileList,根据不同的profile来获得profileManager。&
然后判断当前的device的Priority,如果Priority=100,则去调用queueCommand(new BluetoothJob(BluetoothCommand.CONNECT, this, profile)),去发送连接的命令。如果Priority=1,则不去自动连接。Priority=-1,代表当前的device没有配对。&
在queueCommand()函数里,有一个消息队列来处理命令,在这里生成了一个BluetoothJob的实例,来代表要执行的命令。&
最终调到processCommand(BluetoothJob job)函数,由它来通过mand来调用CONNECT: DISCONNECT:REMOVE_BOND:&
以A2DP为例,在connectInt里,根据不同的profile来获得profilemanger,然后调用 profilemanger.connect()函数,在这个函数里调用了BluetoothA2dpService的connectSink()函数,最后调到Native方法connectSinkNative()去建立连接。&
1.&&&&&&当用户在setting的bluetooth device list中选择了input设备后会触发起所有profile的connect操作,input设备在Setting中叫做HidProfile.java.
值得我们注意的是Android的BluetoothInputDevice是通过getProfileProxy的方法取得的,这点并不同于HFP或HSP.
2.&&&&&&HidProfile通过调用BluetoothInputDevice的connect,如果是有效的设备则BluetoothInputDevice会直接调用bluetoothservice的connectInputDevice函式。
3.&&&&&&其中bluetoothservice也就是简单的调用了BluetoothInputProfileHandler的connectInputDevice函式。connectInputDevice会向BluetoothDeviceProfileState发送CONNECT_HID_OUTGOING消息。
&& Framework中包含了很多profilehandler, 这些Handler有个共同的特点是都包含了一个此profile的设备列表。
4.&&&&&&BluetoothDeviceProfileState会切至OutgoingHidstate.此时OutgoingHid将deferMessageCONNECT_HID_OUTGOING消息并且交由BluetoothDeviceProfileState类的processCommand处理,在些它调用了BluetoothService的connectInputDeviceInternal.
5.&&&&&&在些BluetoothService又去调用了mBluetoothInputProfileHandler的connectInputDeviceInternal,在其中其调用了jni方法BluetoothService的connectInputDeviceNative方法。此时的DBUS调用为异步调用。
6.&&&&&&当Bluez在Input接口上连接成功后,会调用之前注册的onInputDeviceConnectionResult函数,(onInputDeviceConnectionResult是EventLoop中的函数)。
7.&&&&&&onInputDeviceConnectionResult将解析bluez返回的path,其格式中包含了address,所以androide有替换”_”到”:”. 后呼叫了BluetoothService的handleInputDevicePropertyChange去通过mBluetoothInputProfileHandler更新其中设备的连接状态。
本文已收录于以下专栏:
相关文章推荐
1.      当用户在setting的bluetooth device list中选择了input设备后会触发起所有profile的connect操作,input设备在Setting中叫做HidPr...
注:这个分析是很久之前做的了,用于分析的代码是Android 2.1 Eclair。在最新的Android 4.x中,Input相关的代码已经发生了一些变化。在Android 2.1中,Input相关...
关键词:蓝牙blueZ  A2DP、SINK、sink_connect、sink_disconnect、sink_suspend、sink_resume、sink_is_connected、sink_...
关键词:蓝牙blueZ  A2DP、SINK、sink_connect、sink_disconnect、sink_suspend、sink_resume、sink_is_connected、sink_...
Android 实现了对Headset 和Handsfree 两种profile 的支持。其实现核心是BluetoothHeadsetService,在PhoneApp 创建的时候会启动它。     ...
http://blog.c csdn.net/magod/archive//5876655.aspx =========================Kernel Space==...
蓝牙设备之间的通信主要包括了四个步骤设置蓝牙设备
寻找局域网内可能或者匹配的设备
设备之间的数据传输具体编程实现1. 启动蓝牙功能首先通过调用静态方法getDefaultAdapter()获...
=========================Kernel Space=========================
1. Board power init
MACHINE_START...
http://blog.c
csdn.net/magod/archive//5876655.aspx
=========================Ke...
1. BluetoothOppLauncherActivity 保存发送文件信息并调用BluetoothDevicePicker选择设备
2. BluetoothDevicePicker当用...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)  一:什么是蓝牙
    1:Bluetooth是目前使用最广泛的无线通讯协议,近距离无线通讯的标准。传说瑞典有个国王特别爱吃蓝莓导致自己的牙齿天天都是蓝色的,在他执政期间这位国王非常善于交际,能说会到,和邻国的搞得关系非常好,这个Bluetooth的发明者觉得蓝牙它的作用就是在近距离沟通周围的设备,跟这个国王很类似,于是起名叫蓝牙。
    2:主要针对短距离设备通讯(10米)
    3:无线耳机,无线鼠标,无线键盘
  二:蓝牙工作流程图
    首先两个设备上都要有蓝牙设备或者专业一点叫蓝牙适配器,以手机和电脑为例我画了如下流程图。其次在手机上进行扫描,扫描周围蓝蓝牙设备,先找到手机附近的电脑,然后给它发出一个信号需要进行蓝牙的配对,再次返回一个信号说明手机和电脑已经配对成功了,最后配对成功后可以进行文件传输了。这是一个最基本的一个流程。
  三:与蓝牙相关的最重要的两个API
    1:BuletoothAdapter
    这个类的对象代表了本地的蓝牙适配器,相当于蓝牙工作流程图中的手机里的蓝牙适配器,也就是说比如这个应用程序是运行在手机上,那么手机上的蓝牙适配器就是本地蓝牙适配器。
    2:BuletoothDevice
    这个类的对象代表了远程的蓝牙设备,相当于蓝牙工作流程图中的计算机里的蓝牙适配器,也就是说比如这个应用程序是运行在手机上,那么BuletoothDevice代表了你要连接的远程的那个设备上面的蓝牙适配器。
  四:硬件准备
    今天这个示例必须运行在具有安卓2.0SDK以上的手机上面,不能运行在模拟器上面,因为现在的模拟器是不能模拟蓝牙的,所以必须有个安卓的手机,另外要有台具有蓝牙适配器的电脑。手机和电脑来进行配对,只能通过手动来进行,不可能通过代码是实现配对,因为安全性的问题不能通过应用程序自动的来进行配对,一旦配对成功就可以进行文件的传输了。如何配对在这里就不讲解了。
&&&& 五:如何蓝牙配对
&&&&&&&&&& 本来是要拿手机和电脑作为调试的,但是我的电脑上面没有蓝牙适配器,所以就用蓝牙笔代替了。
&&&&&&&&&& 1:插入手机
&&&&&&&&&&&&如果发现没有驱动系统会提示安装驱动
&&&&&&&&&&&
&&&&&&&&&& 2 :下载豌豆荚
&&&&&&&&&& 豌豆荚会自动安装手机对应型号的USB驱动,USB调试默认是打开的(一定要开启手机的USB调试),等待安装完成。
&&&&&&&&& 3 :打开在eclipse的DDMS视图里的Devices这一区域出现了你的手机设备的数字名称了。
&&&&&&&&&&
&&&&&&&& 4:打开手机上的&设置&
&&&&& 5:选择&无线和网络&
&&&&&&&&& 给蓝牙打上勾,此时手机头部的蓝牙小图标已打开,表示开启了蓝牙
&&&&&&& &&
&&&&& 6:扫描配对
&&&&&&&& 拿起蓝牙笔,打开它的开关,点击手机上面的&扫描查找设备&
&&& 7:请求配对&&&&&&&
&&&&&& 输入密钥请求配对,然后等待配对成功
 & 六:实现效果
&&&&&&&&& 扫描已配对的远程蓝牙设备
&&&&&&&&& 代码步骤
    1:需要在AndroidMainfest.xml里声明蓝牙权限
    &uses-permission android:name="android.permission.BLUETOOTH" /&
    2:获得BluetoothAdapter对象
    3:判断当前设备中是否拥有蓝牙设备
    4:判断当前设备中的蓝牙设备是否已经打开
    5:得到所有已经配对的蓝牙设备对象
  七:代码
    1:布局文件main.xml
    &?xml version="1.0" encoding="utf-8"?&    &LinearLayout xmlns:android=""&&&           android:orientation="vertical"&&&           android:layout_width="fill_parent"&&&           android:layout_height="fill_parent"&&&    &    &TextView&&&&&    android:layout_width="fill_parent"&&&&    android:layout_height="wrap_content"&&&&    android:text="@string/hello"&&&   /&&&&   &Button&    android:layout_width="fill_parent"&    android:layout_height="wrap_content"  &  android:text="扫描周围的蓝牙设备"&    android:id="@+id/btn2"    /&  &/LinearLayout&
  2:代码文件MainActivity.java
  package com.szy.
  import java.util.I  import java.util.S  import android.app.A  import android.bluetooth.BluetoothA  import android.bluetooth.BluetoothD  import android.content.I  import android.os.B  import android.view.V  import android.view.View.OnClickL  import android.widget.B
& & public class MainActivity extends Activity {&&&&& private Button mybutton =&&&&&&public void onCreate(Bundle savedInstanceState) &&&&& {&&&&&&&   super.onCreate(savedInstanceState);&&&&&&&   setContentView(R.layout.main);&&&&&&&   //得到按钮&&&&&&&   mybutton = (Button)findViewById(R.id.btn2);&&&&&&&   //绑定监听器&&&&&&&   mybutton.setOnClickListener(new ButtonListener());&&&  }& 
  //监听器匿名类&&& &private class ButtonListener implements OnClickListener&&&& {&&&&&   public void onClick(View v)&&    {&&&      //得到BluetoothAdapter对象&&&      BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();&&&      //判断BluetoothAdapter对象是否为空,如果为空,则表明本机没有蓝牙设备&&&      if(adapter != null)&&&      {&&&&        System.out.println("本机拥有蓝牙设备");&&&&        //调用isEnabled()方法判断当前蓝牙设备是否可用&&&&        if(!adapter.isEnabled())&&&&        {&&&&&&&&&&          //如果蓝牙设备不可用的话,创建一个intent对象,该对象用于启动一个Activity,提示用户启动蓝牙适配器&&&&&          Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);&&&&&          startActivity(intent);&&&&        }&&&&        //得到所有已经配对的蓝牙适配器对象&&&&        Set&BluetoothDevice& devices = adapter.getBondedDevices();&&&&        if(devices.size()&0)&&&&&&&&        {&&&&&          //用迭代&&&&&          for(Iterator iterator = devices.iterator();iterator.hasNext();)&&&&&          {&&&&&&            //得到BluetoothDevice对象,也就是说得到配对的蓝牙适配器&&&&&&            BluetoothDevice device = (BluetoothDevice)iterator.next();&&&&&&            //得到远程蓝牙设备的地址&&&&&&            Log.d("mytag",device.getAddress());
&&&&&          }&&&&&&&&&      }&&&    }&&&    else&&&    {&&&&      System.out.println("没有蓝牙设备");&&&    }&&   }&&&&&&&&&&&&&&   }  }
&&  八:不连接安卓手机效果图
    因为找不到蓝牙设备所以会在DDMS视图下的系统信息里输出&没有蓝牙设备&。
  & 九:调试效果图
&&&&&&& 我们得到了蓝牙笔的蓝牙适配器的地址,我们接下来用MAC地址建立通讯的通道进行文件的传输。
阅读(...) 评论()您正在访问:
& 小鸡手柄 安卓端连接匹配使用教程
小鸡手柄 安卓端连接匹配使用教程
文章来源:YOYO手游
用手机扫描上方二维码
用手机访问
  试问哪家强?虽然不能去山东找蓝翔,不过可以有个模拟器,模拟器游戏完爆目前市面上的,因为这可以玩掌机游戏,可是手机也有局限性,那就是操作感,虚拟按键不爽,不过配上一款手柄就行了,比如下来要教大家使用的手柄&&小鸡手柄,该手柄是小鸡模拟器官方推出的手柄,性能就不必多说啦。
  这篇教程是为小鸡手柄安卓端的用户准备的。鸡柄的使用方法在附送的手柄说明书上有提到,但可能不够详尽,希望这篇教程可以帮到大家。
  第一步 确认小鸡模拟器版本
  确认你的安卓设备中安装的小鸡模拟器为1.25b以上版本。&
  第二步 恢复按键默认设置
  (此步骤针对小鸡旧版本的用户,第一次下载并使用1.25b以上小鸡模拟器版本的新用户可跳过这一步。操作前如果有进入小鸡模拟器的,请双击返回键,确保小鸡模拟器已经完全退出。)
  (1)手机的系统设置&应用程序管理器。
  (2)找到己安装的每一款模拟器(包括小鸡模拟器、2个NDS模拟器以及EMU系列模拟器),
  逐个点击,进行数据清除,如图所示。(清除数据不会删除游戏存档,请放心)
  (3)进入小鸡模拟器,在设置栏目里面找到&恢复按键设置&,然后点击&恢复&按钮。看到&按键恢复成功&提示后,退出小鸡软件,(若发现小鸡里面的游戏不见了,请直接重启手机。)再重新进入。
  这样基本可以保证所有按键设置已经初始化完毕,进行游戏时的按键不易发生错乱。
  第三步 手柄连接
  安卓端的小鸡手柄连接分为无线(OTG)和有线(音频)两种连接模式,无需任何设置,与安卓设备连接配对成功后即可进行各种模拟主机游戏。
  所需配件
  & OTG转换头(x1)
  & USB无线接收器(x1)
  & 音频线(x1)
  以上配件均附在了包装盒中。没发现的玩家记得回头找找看。
  连接步骤
  1、OTG连接模式(请先百度一下自己的手机型号是否具备OTG功能,不具备则不能使用此方式连接)
  配送的OTG款式为安卓机器人形,如下图所示。底部是标准USB A型接口,头部则暗藏着microUSB接口,转动头部即可露出使用。
  (1) 将USB无线接收器插入OTG底部。
  (2) 将OTG 头部插入安卓设备的USB接口。
  (3) 按下手柄的START键(一定要确保手柄没插任何的音频线),
  & 若手柄前端1、2号白灯常亮,则表示手柄与安卓设备己连接成功,此时无需再进行配对,可以直接使用;
  & 若手柄4个指示白灯闪烁,则需要将手柄靠近USB接收器,同时按住手柄SELECT+START键不放(长按不放手),直至手柄前端1、2号白灯常亮,即表示适配成功。
  ※ 注:手柄与USB无线接收器的只需适配一次,适配成功后,每次只需要按开始键启动手柄就会自动连接,不需再配。
  2、音频连接模式
  (1) 将音频线一端插入安卓设备的耳机孔,另一端接入手柄上方靠左侧的音频插口(配对接口)。
  若设备接上音频线后手柄出现噪音,请手动切换手柄底部开关至A/E档。
  (2) 观察到手柄的指示灯呈流水式的闪烁,然后按下手柄的START键。
  (3) 进入游戏后按手柄START键,若画面下端手柄标记变成亮红色,即表示适配成功。
  ※ 注:1.android系统版本低于2.3不支持音频
  2.刷第三方rom包暂时不支持音频
  3.三星note3 4.4.3系统版本不支持音频;4.4.2系统使用音频线连接延迟会很大(官方安卓系统本身问题)
  4.目前ps、nds、n64、wsc模拟器暂不支持音频
  与手柄连接成功以后,便可以进入游戏开始游玩了。另外,按下手柄的按键后,屏幕上的虚拟按键会自动隐藏,如想要唤出虚拟按键,只需再次点击屏幕,屏幕上的虚拟按键便会再次出现。
  机种支持
  最后补充说明下两种模式各自支持的游戏机种。
  OTG模式支持:
  小鸡平台目前拥有的全部机种
  音频模式目前支持:
  ARCADE、MAME、PSP、DC、SFC、MD、FC、GBC、GBA共计9个机种,其他未作映射的机种将尽量在今后的模拟器版本中增加支持。
相关标签:

我要回帖

更多关于 键盘 鼠标 映射手柄 的文章

 

随机推荐