精华内容
下载资源
问答
  • 蓝牙设备

    2015-05-08 11:43:51
    蓝牙是啥我就不再说了,因为我肯定解释不清楚蓝牙是啥,有兴趣请移步至百度... 通常情况下,我们对蓝牙的操作主要有:开启和关闭蓝牙、搜索周边设备、能被周边设备所发现、获取配对设备、蓝牙设备间的数据传输。

    蓝牙是啥我就不再说了,因为我肯定解释不清楚蓝牙是啥,有兴趣请移步至百度百科

      在开始前我们需要准备好一部手机而不是模拟器,且手机已经打开调试模式并连接到电脑上。文中的本地设备均指我们自己的手机,而远程设备则是指其他的设备(电脑、其他手机或者其他)。

      通常情况下,我们对蓝牙的操作主要有:开启和关闭蓝牙、搜索周边设备、能被周边设备所发现、获取配对设备、蓝牙设备间的数据传输。

      1、打开蓝牙(当然首先要确保你的手机是有蓝牙设备的)

      蓝牙设备主要分为两部分,一部分为本地设备,另一部分为远程设备。

    • BluetoothAdapter——本地设备,对蓝牙操作首先就需要有一个BluetoothAdapter实例。常用的几个方法如下:
      •   cancelDiscovery()——取消本地蓝牙设备的搜索操作,如果本地设备正在进行搜索,那么调用该方法后将停止搜索操作。
      •   Disable()——关闭蓝牙设备。
      •   Enable()——打开蓝牙设备。相信大家都有过打开蓝牙的经历,一般情况下都会弹出一个窗口,说正在请求打开蓝牙设备,你是不是允许云云。
      •   getAddress()——获取蓝牙设备的MAC地址。
      •   GetDefaultAdapter()——获取本地的蓝牙设备
      •   getName()——获取本地蓝牙的名称
      •   getRemoteDevice(String address)——根据远程设备的MAC地址来获取远程设备
      •   startDiscovery()——蓝牙设备开始搜索周边设备
    • BuletoothDevice——远程设备。

        它所包含的方法和BluetoothAdapter一样,不再累述。

    View Code

      2、搜索周边设备

      对于Android查找发现蓝牙设备使用BluetoothAdapter类的startDiscovery()方法就可以执行一个异步方式获取周边的蓝牙设备,因为是一个异步的方法所以我们不需要考虑线程被阻塞问题,整个过程大约需要12秒时间,这时我们可以注册一个 BroadcastReceiver 对象来接收查找到的蓝牙设备信息,我们通过Filter来过滤ACTION_FOUND这个 Intent动作以获取每个远程设备的详细信息,通过Intent字段EXTRA_DEVICE 和 EXTRA_CLASS可以获得包含了每个BluetoothDevice 对象和对象的该设备类型 BluetoothClass。

      实现一个自己的BroadCastReceiver类,并注册这个类。

    复制代码
     1     private class BluetoothReciever extends BroadcastReceiver {
    2
    3 @Override
    4 public void onReceive(Context context, Intent intent) {
    5 // TODO Auto-generated method stub
    6 String action = intent.getAction();
    7 if (BluetoothDevice.ACTION_FOUND.equals(action)) {
    8 BluetoothDevice device = intent
    9 .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
    10 System.out.println(device.getAddress());
    11 }
    12 }
    13
    14 }
    复制代码
    1         IntentFilter intentFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
    2 bluetoothReceive = new BluetoothReciever();
    3 registerReceiver(bluetoothReceive, intentFilter);

      因为在注册一个Receiver后,程序并不知道该何时去回收它,所以需要我们自己重写Activity类的onDestroy()方法。

    1     @Override
    2 protected void onDestroy() {
    3 // TODO Auto-generated method stub
    4 unregisterReceiver(bluetoothReceive);
    5 super.onDestroy();
    6 }

      3、被周边设备所发现  

      如果需要用户确认操作,不需要获取底层蓝牙服务实例,可以通过一个Intent来传递ACTION_REQUEST_DISCOVERABLE参数, 这里通过startActivity来请求开启。

    1     Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
    2 //50这个参数代表的是蓝牙设备能在多少秒内被发现 discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 50);
    3 startActivity(discoverableIntent);

      4、配对

      配对操作呢,一般都是发现设备后,由我们人工来进行选择后系统自动去配对。我们可以通过下面的方法来获得配对的设备:

    复制代码
     1                 //通过getBondedDevices方法来获取已经与本设备配对的设备
    2 Set<BluetoothDevice> device= adapter.getBondedDevices();
    3 if(device.size()>0)
    4 {
    5 for(Iterator iterator=device.iterator();iterator.hasNext();)
    6 {
    7 BluetoothDevice bluetoothDevice=(BluetoothDevice)iterator.next();
    8 System.out.println(bluetoothDevice.getAddress());
    9 }
    10 }
    复制代码

      5、数据交换  

      在看过前面的启动、发现/搜索、配对这些操作后,下面来说说数据传输的问题。

      在Android系统中,蓝牙设备间的数据传输问题和我们在PC上的网络编程颇为类似,有一端作为Server端监听Client端的连接请求,在二者建立了连接后,就可以使用普通的数据传输方式进行数据交换操作了。在这个过程中,我需要使用到BluetoothServerSocket和BluetoothSocket两个类来建立Server端和Client端,还需要使用到一些关于流(Stream)的知识。

    • BluetoothServerSocket——服务端(监听端、监听器、接受请求的一端)
      • Accept()——阻塞宿主线程,直至收到客户端请求。返回BluetoothSocket对象。由于这个
      • Accept(int timeout)——阻塞宿主线程,直至收到客户端请求或等待时间超过timeout。返回BluetoothSocket对象。
      • Close()——关闭BluetoothServerSocket监听器。

      可以看到,Accept方法是一个阻塞方法,所以在进行开发的时候,一般都需要用到多线程的知识。JAVA的多线程知识,可以在JAVA的JDK帮助文档中查看,就单纯的应用来说还是比较简单的。

    • BluetoothSocket——客户端(请求端)
      • Close()——关闭BluetoothSocket请求端。
      • Connect()——主动向服务端(监听端)发起连接请求。

      在了解了这两个类后,可以着手来建立我们自己的Server端和Client端了。

      如果一个设备需要和两个或多个设备连接时,就需要作为一个server来传输,服务器端套接字在接受(accepted) 一个客户发来的BluetoothSocket连接请求时作出相应的响应。服务器socket将监听进入的连接请求,一旦连接被接受,将产生一个BluetoothSocket。

    • 创建一个Server

      使用BluetoothAdapter类的listenUsingRfcommWithServiceRecord方法来新建一个ServerSocket。在listenUsingRfcommWithServiceRecord中有一个参数叫做UUID,UUID(Universally Unique Identifier)是一个128位的字符串ID,被用于唯一标识我们的蓝牙服务。你可以使用web上的任何一款UUID产生器为你的程序获取一个UUID,然后使用fromString(String)初始化一个UUID。

      使用ServerSocket实例的accept方法进行监听,当监听到带有我们初始化的UUID参数的连接请求后作出响应,连接成功后返回一个BluetoothSocket对象。连接完成后,调用close方法关闭该Socket监听。

    View Code
    • 创建一个Client

      创建一个Client端,首先需要我们使用BluetoothDevice的实例的createRfcommSocketToServiceRecord方法来创建一个BluetoothSocket实例。在创建的时候,需要给createRfcommSocketToServiceRecord方法传入我们服务端的UUID值。然后使用BluetoothSocket实例的Connect方法对Server端进行连接请求,当连接成功后,Client端和Server端的传输通道就被打开。最后在连接完成后使用该实例的close方法来关闭这个连接。

    View Code

      getInputStream()——获得一个可读的流,该流在连接不成功的情况下依旧可以获得,但是对其操作的话就会报IOException的异常。需要从外部获取的数据都从该流中获取。

      getOutputStrem()——获得一个可写的流,该流在连接不成功的情况下依旧可以获得,但是对其操作的话就会报IOException的异常。需要往外部传输的数据都可以写到该流中传输出去。

      数据传输的大致流程如下:

      • 首先,分别通过getInputStream()和getOutputStream()获得管理数据传输的InputStream和OutputStream。
      • 然后,开辟一个线程专门用于数据的读或写。这是非常重要的,因为read(byte[])和write(byte[])方法都是阻塞调用。read(byte[])从输入流(InputStream)中读取数据。write(byte[])将数据写入到OutputStream流中去,这个方法一般不会阻塞,但当远程设备的中间缓冲区已满而对方没有及时地调用read(byte[])时将会一直阻塞。所以,新开辟的线程中的主循环将一直用于从InputStream中读取数据。

      还要补充一点,由于蓝牙设备是系统设备,所以需要有相应的权限支持。在AndroidManifest.xml文件中添加上权限。

    1     <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
    2 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

    三、总结

      在这个笔记中将了下蓝牙的一些简单的操作,包括蓝牙的开启、搜索、配对等操作,同时还有数据的传输问题,关于数据的传输的相关操作最重要的其实是多线程的操作和数据流的操作,所以对这两点不熟悉的同学可以去看看java的JDK帮助文档。在下节中,将会将一些WIFI的操作,因为WIFI内容不是很多,所以还将附加上一些Android网络编程方面的内容。

    展开全文
  • Win10蓝牙设备删除失败,蓝牙设备更新设备(终极解决方案) 解决WH1000XM3连接电脑无法使用麦克风问题 FILCO连接WIN10出现PIN问题 FILCO蓝牙CSR4.0驱动安装连接(解决蓝牙连接的终极管理方法,速度极快) 博主...

    关联问题:

    Win10蓝牙设备删除失败,蓝牙设备更新设备(终极解决方案)

    解决WH1000XM3连接电脑无法使用麦克风问题

    FILCO连接WIN10出现PIN问题

    FILCO蓝牙CSR4.0驱动安装连接(解决蓝牙连接的终极管理方法,速度极快)


    博主蓝牙设备主要是

    • 耳机WH1000XM3
    • 键盘FiLCO67 (可兼容4.0)
    • 鼠标 Logitech G903
    • 鼠标垫 Logitech GPOWERPLAY

    由于种种原因,手贱点了删除设备,或者更新了蓝牙驱动等等,这里给出4种解决方法,当然建议直接看最后一种,因为我前三种都不行。

    一. 彻底删除设备(即将蓝牙连接历史还原到初始状态)

    1. 下载 修复工具,一路默认选项完成安装。防止链接失效,附上 百度网盘链接
    2. 打开 Powershell,命令行输入 btpair -u,回车执行
    3. 等待,你会发现已配对的蓝牙设备 终于 成功 彻底地 被删除了

    链接:Win10彻底删除蓝牙设备

    二、控制面板搜索

    1、按下win+x 组合键打开 超级菜单,点击 控制面板 ;

    2、在控制面板的硬件和声音下方点击【添加设备】;

    3、此时系统开始搜索可以连接到的设备,现在你按住蓝牙设备的蓝牙开关按钮,记住是长按,电脑就可以搜索到你的蓝牙设备了,点击连接即可!

    三、卸载未知的USB设备

    打开设备管理器,卸载掉未知USB设备,重新识别硬件。

    有时能识别到蓝牙,有时也不能识别,一般多试几次,或者隔一段时间再识别,就能识别了

    四、终极方法删除蓝牙

    1. 经过博主验证在驱动精灵删除蓝牙驱动,蓝牙是能仍然使用的

    2. 进入设备管理器,直接到蓝牙,右键先更新蓝牙设备

    3. 2如果不行直接卸载设备

    4. 你继续进入连接蓝牙的地方会神奇的发现蓝牙能够连接了!

    注意:这里博主也准备了安装intel的蓝牙驱动,但是其实设备管理器这里根本就无法完全删除蓝牙,因为删除之后短暂时间看不见蓝牙,接下来他又神奇地出现了,也是这个时候我的蓝牙完全能够连接了!这个步骤应该也可以理解为重新从根源上装了一次蓝牙,也把过去的蓝牙记录删除了。

    但是注意第四条完成后我发现我的蓝牙连接比原来快了N倍,几乎是重开蓝牙的一瞬间,耳机就能连接上蓝牙播放音乐,不过缺点是只有在设备管理器能看见完整的蓝牙设备,在windows消息栏只有耳机的蓝牙显示。

    当然了sony这一款蓝牙建议还是配合降噪和有线使用,FILCO建议和4.0连接器配合使用,有4.0不用猪头三。

     

    展开全文
  • Win10彻底删除蓝牙设备

    万次阅读 多人点赞 2019-01-04 00:01:29
    Win10与蓝牙设备(比如蓝牙键盘,蓝牙音箱)出现无法连接的情况,本来打算删除已配对的设备,再重新配对连接。但神一样的Win10,删除设备后重启蓝牙,那些原本被删除的设备又回来了,是的,全都回来了。 解决方法 ...

    题记

    Win10 很多 Bug

    问题描述

    Win10 与蓝牙设备(比如蓝牙键盘,蓝牙音箱)出现了无法连接的情况,本来打算删除已配对的设备,再重新配对连接。但 Win10 很多 Bug 呢,删除设备后重启蓝牙,那些原本被删除的设备又回来了,是的,全都回来了。

    解决方法

    尝试了很多方法,包括网上流传的打开飞行模式,在控制面板里的设备与打印机里删除设备等等,均无效。

    后来的一切,是缘份了。和你恰好在浏览这篇文章道理相似。

    原帖如下,链接:https://www.tenforums.com/drivers-hardware/22049-how-completely-remove-bluetooth-device-win-10-a.html

    在这里插入图片描述

    具体解决方法,翻译过来就是:

    1. 下载 修复工具,一路默认选项完成安装。防止链接失效,附上 百度网盘链接
    2. 打开 Powershell,命令行输入 btpair -u,回车执行
    3. 等待,会发现已配对的蓝牙设备 终于 成功 彻底 被删除了
    4. 喜极而泣
    展开全文
  • iOS 蓝牙设备

    千次阅读 2020-01-12 13:25:34
    文章目录iOS 蓝牙设备一、 蓝牙管理类的初始化二、检查外部蓝牙设备是否可用三、开始扫描蓝牙设备四、结束蓝牙设备扫描四、连接指定设备五、连接蓝牙设备后接收蓝牙服务1.发现服务后回调订阅指定`Service`的特征2. ...

    iOS 蓝牙设备

    一、 蓝牙管理类的初始化
    CBCentralManager *blueManager = [[CBCentralManager alloc]initWithDelegate:self queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) options:nil];
    
    二、检查外部蓝牙设备是否可用
    • 在CBCentralManager初始化之后会自动调用centralManagerDidUpdateState,在蓝牙的状态为开即centralManager.state == CBManagerStatePoweredOn 时,进行蓝牙扫描。
    - (void)centralManagerDidUpdateState:(CBCentralManager *)central{
        if (central.state == CBManagerStatePoweredOn) {
                [weakManager startScan];
            }
    }
    
    三、开始扫描蓝牙设备
    • 扫描指定UUID 的设备,在options 里面配置是否允许重复的key,当services入参为空值时,默认扫描所有设备。
      [self.blueManager scanForPeripheralsWithServices:@[] options:@{CBCentralManagerScanOptionAllowDuplicatesKey:[NSNumber numberWithBool:YES]}];
    四、结束蓝牙设备扫描
    • 在扫描完成蓝牙设备之后,要及时关闭蓝牙扫描
      [CBCentralManager stopScan];
    
    四、连接指定设备
    1. 在正确扫描设备之后需要在CBCentralManagerDelegate实现其中的发现设备代理,用户可以在发现代理中进行数据的去重和回调操作。
    - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI {
        if (central) {
            DeviceModel *model = [[DeviceModel alloc] init];
            model.deviceName = peripheral.name;
            model.rssid = RSSI;
            NSLog(@"peripheral%@--%@--%@", peripheral.name, peripheral.identifier, RSSI);
            [self.deviceArray addObject:model];
        }
    }
    
    1. 连接蓝牙设备
    [CBCentralManager connectPeripheral:HWBleMgr.model.discoveredPeripheral options:nil];
    
    五、连接蓝牙设备后接收蓝牙服务
    • 在连接成功之后需要遵守CBPeripheral类的代理方法CBPeripheralDelegate,并实现相关方法。
    - (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {
        peripheral.delegate = self;
        // 设置指定发现的服务集合,如果设置发现服务为nil,则所有的相关服务都会被发现,当服务被发现时会回调
    `didDiscoverServices`方法。
        [peripheral discoverServices:nil];
        // 可以在这个代理中监听一下蓝牙的连接状态
    }
    
    1.发现服务后回调订阅指定Service的特征
    - (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error {
        NSMutableArray *services = [NSMutableArray array];
        for (CBService *s in self.model.discoveredPeripheral.services) {
            
            NSString *uuid = [NSString stringWithFormat:@"%@",[s.UUID UUIDString]?:@""];
            [services addObject:uuid];
            // 订阅特征
            [self.model.discoveredPeripheral discoverCharacteristics:nil forService:s];
        }
        
        NSDictionary *dict = @{@"services":services,
                               @"isPrimary":[NSNumber numberWithBool:YES]
                               };
        // 
        if (self.model.deviceServicesCallbackBody.callbacks.count > 0) {
            
            [self.model.deviceServicesCallbackBody callWithMyArguments:@[dict]];
        }
    }
    
    2. 发现订阅的特征触发方法
    • 发现特征后,可以根据特征的properties 进行:读(read)、写(writeValue)、订阅通知(setNotifyValue)、扫描特征的描述(discoverDescriptorsForCharacteristic)
    - (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error{
        
        for (CBCharacteristic *c in service.characteristics) {
            NSString *uuid = [NSString stringWithFormat:@"%@",[c.UUID UUIDString]];
            BOOL isRead = NO;
            BOOL isWrite = NO;
            BOOL isNotify = NO;
            BOOL isIndicate = NO;
            if(c.properties == CBCharacteristicPropertyRead){
                isRead = YES;
            }else if (c.properties == CBCharacteristicPropertyWrite) {
                isWrite = YES;
            }else if (c.properties == CBCharacteristicPropertyNotify) {
                isNotify = YES;
            }else if (c.properties == CBCharacteristicPropertyIndicate) {
                isIndicate = YES;
            }
            NSDictionary *properties = @{@"read":[NSNumber numberWithBool:isRead],
                                         @"write":[NSNumber numberWithBool:isWrite],
                                         @"notify":[NSNumber numberWithBool:isNotify],
                                         @"indicate":[NSNumber numberWithBool:isIndicate]
                                         };
            NSDictionary *dict = @{@"uuid":uuid,
                                   @"properties":properties
                                   };
            
            if (![self.model.connectedPeripheralCharacteristics containsObject:dict]) {
                
                [self.model.connectedPeripheralCharacteristics addObject:dict];
            }
            
            // [_model.discoveredPeripheral setNotifyValue:YES forCharacteristic:c];
        }
        
        // 判断返回的characteristics次数,确定是最后一次,即读取完毕才callback
        if (peripheral.services.count == _discoveredCharacteristicsCount) {
            
            _discoveredCharacteristicsCount = 1;
            
            NSArray *characteristics = self.model.connectedPeripheralCharacteristics;
            if (self.model.deviceCharacteristicsCallbackBody.callbacks.count > 0) {
                
                [self.model.deviceCharacteristicsCallbackBody callWithMyArguments:characteristics];
            }
            
            if (self.model.servicesDiscoveredCallbackBody.callbacks.count > 0) {
                
                NSString *callbackString = [self.model.servicesDiscoveredCallbackBody.callbacks firstObject];
                NSString *returnStr = [NSString stringWithFormat:@"%@('%@')",callbackString,@0];
                dispatch_async(dispatch_get_main_queue(), ^{
                    
                    [[NSNotificationCenter defaultCenter]postNotificationName:@"HWBluetoothCallbackBodyNotification" object:returnStr];
                });
            }
        }else {
            _discoveredCharacteristicsCount ++;
        }
    }
    
    3.当设备特征值变化时触发方法(read 和notify 状态)
    - (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {
    
    }
    
    - (void)peripheral:(CBPeripheral *)peripheral didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {
        if (characteristic.isNotifying) {
            [peripheral readValueForCharacteristic:characteristic];
        } else { 
            NSLog(@"Notification stopped on %@.  Disconnecting", characteristic);
            NSLog(@"%@", characteristic);
            [self.centralManager cancelPeripheralConnection:peripheral];
        }
    }
    
    4.给设备写入数据成功触发方法
    - (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error{
        NSLog(@"写入成功");
        if ([self.delegate respondsToSelector:@selector(didWriteSucessWithStyle:)]) {
            [self.delegate didWriteSucessWithStyle:_style];
        }
    }
    
    展开全文
  • 更换电脑蓝牙设备后(或更新蓝牙驱动后),出现以前的蓝牙设备无法连接的情况。当尝试删除已配对设备并重新配对连接时,发现提示设备删除失败,或删除设备后重启蓝牙原本被删除的设备又重新出现。总的情况就是,以前...
  • 通过BluetoothAdapter的api来开启蓝牙设备,搜索周边的蓝牙设备,然后Android系统以广播的方式告知用户开始,发现,结束三个阶段,并在发现阶段以BluetoothDevice对象的形式发送来蓝牙的相关信息
  • 微信蓝牙设备开发教程之获取蓝牙设备deviceid和设备二维码,微信获取蓝牙设备id和二维码
  • 蓝牙设备固件升级

    千次阅读 2020-06-27 09:20:55
    蓝牙设备的固件需要升级时,由嵌入式开发人员提供新的固件,由服务器管理人员将固件放到服务器上。 用户打开手机 APP 的时候会检测到服务器有更新,请求更新蓝牙设备固件,确认更新后,手机会从服务器下载固件。 ...
  • android监听蓝牙设备的连接状态

    千次下载 热门讨论 2013-09-10 10:22:03
    通过系统广播监听蓝牙设备的连接状态,当蓝牙搜索发现设备时提示对应的蓝牙设备已发现,当蓝牙设备连接或断开显示蓝牙设备连接或断开。
  • 蓝牙设备的查找

    千次阅读 2019-06-03 08:44:30
    蓝牙设备的查找与绑定 查找蓝牙设备 查找蓝牙设备分为两个部分,第一个是已经绑定的设备,第二个是搜素新的蓝牙设备。对于已经绑定的蓝牙设备来说,通过BluetoothAdapter的getBondedDevices()方法获得,此方法返回的...
  • 扫描蓝牙设备获取到的信息中,无法判断扫描到的蓝牙设备属于什么类型的设备。 扫描蓝牙信息使用的是python 里面的bluetooth模块。 首先扫描出来的是这样的信息 ('74:60:FA:FD:FC:49','HUAWEI P30',5898764) 可根据...
  • android 打开蓝牙设备 显示已经配对的蓝牙设备 ,并将已配对的蓝牙设备显示在textview中
  • 如何判断蓝牙设备类型

    千次阅读 2019-12-07 18:58:19
    我们在开发Android的蓝牙应用时,可能需要知道扫描到的蓝牙设备是什么类型,然后过滤掉不符合要求的设备,只保留符合要求的设备,例如我们在车载系统上开发蓝牙电话应用时,我们希望只显示手机蓝牙设备,那么如何从...
  • 本文章主要讲下蓝牙设备类型class of device的概念,service class ,major device,minor device类型以及举例说明下某一个cod的解析。 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: ...
  • 此篇博文主要讲的是蓝牙:它包括蓝牙的可见性设置、以及扫描周围的蓝牙设备manifests里面所加的权限:<!--扫描已配对的蓝牙设备权限--> <!--修改蓝牙设备的可见性的权限--> <uses-permission android:name="a
  • 蓝牙设备的连接

    2017-01-12 18:15:20
    蓝牙(BlueTooth)是一种无线技术标准,可实现固定设备,移动设备和楼宇个人域网之间的短距离数据通信,蓝牙设备最多可以同时和7个其他蓝牙设备进行连接,进行通信 蓝牙的功能: 1.扫描其他蓝牙设备 2.为可配对的蓝牙...
  • Android 扫描蓝牙设备并获取设备类型

    千次阅读 2020-07-23 14:34:30
    Android扫描蓝牙设备是通过BluetoothAdapter启动蓝牙搜索,然后通过广播接收扫描的结果,其主要代码如下: 1,获取BluetoothAdapter 可通过单例模式直接获取 val btAdapt = BluetoothAdapter.getDefaultAdapter() 2...
  • bluetooth.js import store from '@/store/index.js'; class Bluetooth { ... //蓝牙设备列表 this.services = []; this.serviceId = 0; this.writeCharacter = false; this.readCharacter = false; thi
  • 零基础开发蓝牙设备

    千次阅读 2020-11-28 10:40:16
    所以这里我们可以用shineblink.com提供的core物联网核心板,基于core我们能够在短短几分钟内只用几行代码就可以定制出我们自己的蓝牙设备,并且基于core配套的《免开发App》,我们甚至连手机端App开发的工作都省掉了...
  • 微信小程序对接蓝牙设备连接

    千次阅读 2020-05-11 19:08:48
    一般使用蓝牙功能肯定是想连接某一个蓝牙设备,所以需要知道这个蓝牙设备的名称,一般来说都是扫描二维码连接,那么当你扫描这个设备二维码的时候,就需要去初始化你手机上的蓝牙模块 1.小程序初始化蓝牙设备和打开...
  • 前几天我的电脑自带的蓝牙图标不见了,然后在设备管理器里看到在不停的刷新,一会儿有蓝牙设备一会儿又没了。 然后网络上搜到了终极解决方案,原文找不到了,在这里记录一下: 关机后拔掉电脑上的电源接头(如果是...
  • 蓝牙适配器添加所有蓝牙设备Although themajority of laptops—and even desktops—now come with Bluetooth support, some of us still need Bluetooth upgrades. If you’re rocking a device without Bluetooth ...
  • 首先将确认蓝牙设备已经连接到笔记本上 接下来在屏幕右下角的"声音控制"的图标上右键--->选择"播放"设置选项 接下来在播放选项中选择蓝牙设备行,在该选项上右键,选择"连接", 在选择“测试”,蓝牙设备会响测试...
  • 安卓APP蓝牙上位机的编写二——搜索附近蓝牙设备 安卓开发之搜索附近所有的蓝牙设备,源代码附送。
  •  Android Bluetooth蓝牙开发:发现Bluetooth蓝牙设备(1) ...(1)启动代码后,首先要检查是否设备是否支持蓝牙设备,如果设备自身就没有蓝牙设备,巧妇难为无米之炊,就不要再做无用功了,代码片段: mBluetoo
  • 在 Windows 中打开蓝牙设备

    千次阅读 2019-08-22 08:56:14
    在 Windows 中打开蓝牙设备 你可以将所有类型的蓝牙设备连接到电脑,包括键盘、鼠标、手机、扬声器和许多其他设备。若要执行此操作,你的电脑需要具有蓝牙。部分电脑 (如笔记本电脑和平板电脑) 装有内置蓝牙。如果你...
  • 微信断开蓝牙设备后,怎么不让它自动连接,设备授权可以设置连接与断开方式,但觉得不行呀
  • Android对于蓝牙开发从2.0版本的sdk才开始支持,而且模拟器不支持,测试至少需要两部手机,... // 管理蓝牙设备的权限 // 使用蓝牙设备的权限 2.打开蓝牙 获得蓝牙适配器(android.bluetooth.BluetoothAdapte
  • Android 获取蓝牙设备类型

    千次阅读 2017-04-17 16:55:38
    之前我们分析了如何获取已连接的蓝牙设备地址 http://blog.csdn.net/jasonwang18/article/details/61214431 本篇我们分析如何获取对应蓝牙设备的类型,这个类型和profile不是同一个东西,而是具体蓝牙的设备类型...
  • 蓝牙设备探测工具blueranger

    千次阅读 2017-12-28 10:08:03
    蓝牙设备探测工具blueranger

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,216
精华内容 6,486
关键字:

蓝牙设备