⑴ 如何使用android手机蓝牙接收和发送文件
使用Android手机蓝牙发送资料 您可以使用蓝牙从手机传送信息到其他具备蓝牙功能的手机或笔记型计算机等装置。第一次要在手机和其他装置之间传送信息之前,您必须先输入或确认安全密码。接着手机就能与其他装置完成配对,日后您在传送信息时就无需再交换密码。 根据要传送的目标装置类型,您可以传送的信息类型如下: *影像和影片 *日历活动 *连络人 *音讯档 1.将接收装置设为可被侦测模式。您可能也需要将装置设为“接收资料交换”或“接收档案”。如需透过蓝牙接收信息的详细信息,请参阅装置的说明文件。 2.在手机上,开启包含您想要传送之信息或档案的应用程序。假如您想要传送相片,先选择【照片】这个程序。 3.依照您想要传送的项目类型的下列步骤: *相片或影片(在相机程序中)。拍摄相片之后,在预览画面中点选分享按钮,然后点选蓝牙。 *相片和影片(在相片程序中)。在相簿标签中,点选相簿。接着点选分享按钮,再点选蓝牙,选取您想要分享的项目,然后点选下一步。 *日历活动。在日历的日检视、议程检视或周检视中,按住活动,然后点选分享vCalendar蓝牙。 *连络人。在连络人的全部标签上,按住连络人,然后点选使用vCard传送连络人。点选向下箭头图示,然后从显示的清单中选取蓝牙。 *音乐曲目。在目前播放画面显示的曲目中,按下MENU,然后点选分享蓝牙。 *录音。在录音机主画面上,点选分享按钮,然后点选蓝牙。 4.如果出现要求开启蓝牙的提示,请点选是。 5.点选接收装置的名称。 6.出现提示时,在接收装置上接受连线,然后同时在手机和其他装置上输入相同的密码,或确认自动产生的密码。 7.在接收装置上,接受档案。 信息的储存位置将视信息类型和接收装置而异: *如果传送的是日历活动或连络人,通常会直接加入接收装置上对应的应用程序。例如当您传送日历活动到兼容的手机时,该活动就会显示在该手机的日历应用程序中。 *如果传送其他的档案类型到Windows计算机,则通常会储存到个人文件资料夹下的BluetoothExchange资料夹中。WindowsXP上的路径可能是:C:\\DocumentsandSettings\\[yourusername]\\MyDocuments\\BluetoothExchange。WindowsVista上的路径可能是:C:\\Users\\[yourusername]\\Documents。 *如果传送档案到其他装置,储存的位置将视档案类型而异。假如您传送影像档到其他的行动电话,则档案可能会储存到名为“Images”的资料夹。
⑵ Android蓝牙连接后怎么接受数据
Android 蓝牙编程的基本步骤:
1.获取蓝牙适配器BluetoothAdapter blueadapter=BluetoothAdapter.getDefaultAdapter();
如果BluetoothAdapter 为null,说明android手机没有蓝牙模块。
判断蓝牙模块是否开启,blueadapter.isEnabled() true表示已经开启,false表示蓝牙并没启用。
2.启动配置蓝牙可见模式,即进入可配对模式Intent in=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
in.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 200);
startActivity(in); ,200就表示200秒。
3.获取蓝牙适配器中已经配对的设备Set<BluetoothDevice> device=blueadapter.getBondedDevices();
4.还需要在androidManifest.xml中声明蓝牙的权限
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
接下来就是根据自己的需求对BluetoothAdapter 的操作了。
有不明白的地方可以问问ITJOB Android的老师们。
⑶ Android蓝牙开发(二)经典蓝牙消息传输实现
上篇文章中,我们主要介绍了蓝牙模块,传统/经典蓝牙模块BT和低功耗蓝牙BLE及其相关的API,不熟悉的可以查看 Android蓝牙开发(一)蓝牙模块及核心API 进行了解。
本篇主要记录用到的经典蓝牙开发流程及连接通讯。
蓝牙连接前,给与相关系统权限:
安卓6.0以上系统要动态请求及获取开启GPS内容:
蓝牙核心对象获取,若获取对象为null则说明设备不支持蓝牙:
判断蓝牙是否开启,没有则开启:
蓝牙扫描:
取消扫描:
蓝牙监听广播,监听蓝牙开关,发现设备,扫描结束等状态,定义状态回调接口,进行对应操作,例如:监听到蓝牙开启后,进行设备扫描;发现设备后进行连接等。
客户端,与服务端建立长连接,进行通讯:
服务端监听客户端发起的连接,进行接收及通讯:
客户端连接及服务端监听基类,用于客户端和服务端之前Socket消息通讯,进行消息或文件的发送、接收,进行通讯关闭操作等:
我这里只是简单记录了项目中用到的蓝牙通讯,两个设备之间不通过配对进行连接、通讯。
相关详细内容及使用请查看Github项目: https://github.com/MickJson/BluetoothCS
蓝牙配对操作及其它内容,可以详细查看我下面的参考资料,写的十分详细,比如设备通过MAC地址,可以通过BluetoothAdapter获取设备,再通过客户端connect方法去进行连接等。
连接中遇到问题:read failed, socket might closed or timeout, read ret: -1。
通过改UUID,反射等方法都还是会出现错误。连接时,要确保服务端及客户端都处于完全断开状态,否则连接就会出现以上问题,但偶尔还是会有问题,期待有什么好的方法可留言告诉我。
参考资料:
Android-经典蓝牙(BT)-建立长连接传输短消息和文件
Android蓝牙开发—经典蓝牙详细开发流程
欢迎点赞/评论,你们的赞同和鼓励是我写作的最大动力!
⑷ 关于MacBook Pro无法接收通过安卓手机蓝牙传送的文件与照片的解决方法
日常中出现MacBook Pro无法接收通过Android手机蓝牙传送的文件与照片的情况,一般是因为macOS的蓝牙共享没有开启,所以才无法传送文件与照片。那么想要解决MacBook Pro无法接收通过Android手机蓝牙传送的文件与照片,首先要开启macOS 的蓝牙共享。跟我来看看具体步骤吧~
怎么开启MacBook Pro的蓝牙共享
1、点选左上角‘苹果图示’呼叫出选单接着点选‘系统偏好设置’,看到以下画面出现之后请点选‘共享’即可。
2、进入到‘共享’页面之后请勾选‘蓝牙共享’前面的方块即可。
以上就是我所述内容啦!希望对你们有帮助哦~
⑸ Android-Ble蓝牙开发Demo示例–扫描,连接,发送和接收数据,分包解包(附源码)
万物互联的物联网时代的已经来临,ble蓝牙开发在其中扮演着举重若轻的角色。最近刚好闲一点,抽时间梳理下这块的知识点。
涉及ble蓝牙通讯的客户端(开启、扫描、连接、发送和接收数据、分包解包)和服务端(初始化广播数据、开始广播、配置Services、Server回调操作)整个环节以及一些常见的问题即踩过的一些坑。
比如
1、在Android不同版本或不同手机的适配问题,扫描不到蓝牙设备
2、如何避免ble蓝牙连接出现133错误?
3、单次写的数据大小有20字节限制,如何发送长数据
蓝牙有传统(经典)蓝牙和低功耗蓝牙BLE(Bluetooth Low Energy)之分,两者的开发的API不一样,本文主讲Ble蓝牙开发,传统蓝牙不展开,有需要的可以自行了解。
相对传统蓝牙,BLE低功耗蓝牙,主要特点是快速搜索,快速连接,超低功耗保持连接和数据传输。
客户端
服务端
Android4.3(API Level 18)开始引入BLE的核心功能并提供了相应的 API。应用程序通过这些 API 扫描蓝牙设备、查询 services、读写设备的 characteristics(属性特征)等操作。
BLE蓝牙协议是GATT协议, BLE相关类不多, 全都位于android.bluetooth包和android.bluetooth.le包的几个类:
android.bluetooth.
.BluetoothGattService 包含多个Characteristic(属性特征值), 含有唯一的UUID作为标识
.BluetoothGattCharacteristic 包含单个值和多个Descriptor, 含有唯一的UUID作为标识
.BluetoothGattDescriptor 对Characteristic进行描述, 含有唯一的UUID作为标识
.BluetoothGatt 客户端相关
.BluetoothGattCallback 客户端连接回调
.BluetoothGattServer 服务端相关
.BluetoothGattServerCallback 服务端连接回调
android.bluetooth.le.
.AdvertiseCallback 服务端的广播回调
.AdvertiseData 服务端的广播数据
.AdvertiseSettings 服务端的广播设置
.BluetoothLeAdvertiser 服务端的广播
.BluetoothLeScanner 客户端扫描相关(Android5.0新增)
.ScanCallback 客户端扫描回调
.ScanFilter 客户端扫描过滤
.ScanRecord 客户端扫描结果的广播数据
.ScanResult 客户端扫描结果
.ScanSettings 客户端扫描设置
BLE设备分为两种设备: 客户端(也叫主机/中心设备/Central), 服务端(也叫从机/外围设备/peripheral)
客户端的核心类是 BluetoothGatt
服务端的核心类是 BluetoothGattServer 和 BluetoothLeAdvertiser
BLE数据的核心类是 BluetoothGattCharacteristic 和 BluetoothGattDescriptor
下面详细讲解下客户端和服务端的开发步骤流程
安卓手机涉及蓝牙权限问题,蓝牙开发需要在AndroidManifest.xml文件中添加权限声明:
在搜索设备之前需要询问打开手机蓝牙:
注意: BLE设备地址是动态变化(每隔一段时间都会变化),而经典蓝牙设备是出厂就固定不变了!
通过扫描BLE设备,根据设备名称区分出目标设备targetDevice,下一步实现与目标设备的连接,在连接设备之前要停止搜索蓝牙;停止搜索一般需要一定的时间来完成,最好调用停止搜索函数之后加以100ms的延时,保证系统能够完全停止搜索蓝牙设备。停止搜索之后启动连接过程;
BLE蓝牙的连接方法相对简单只需调用connectGatt方法;
参数说明
与设备建立连接之后与设备通信,整个通信过程都是在BluetoothGattCallback的异步回调函数中完成;
BluetoothGattCallback中主要回调函数如下:
上述几个回调函数是BLE开发中不可缺少的;
当调用targetdDevice.connectGatt(context, false, gattCallback)后系统会主动发起与BLE蓝牙设备的连接,若成功连接到设备将回调onConnectionStateChange方法,其处理过程如下:
判断newState == BluetoothGatt.STATE_CONNECTED表明此时已经成功连接到设备;
mBluetoothGatt.discoverServices();
扫描BLE设备服务是安卓系统中关于BLE蓝牙开发的重要一步,一般在设备连接成功后调用,扫描到设备服务后回调onServicesDiscovered()函数,函数原型如下:
BLE蓝牙开发主要有负责通信的BluetoothGattService完成的。当且称为通信服务。通信服务通过硬件工程师提供的UUID获取。获取方式如下:
具体操作方式如下:
开启监听,即建立与设备的通信的首发数据通道,BLE开发中只有当客户端成功开启监听后才能与服务端收发数据。开启监听的方式如下:
BLE单次写的数据量大小是有限制的, 通常是20字节 ,可以尝试通过requestMTU增大,但不保证能成功。分包写是一种解决方案,需要定义分包协议,假设每个包大小20字节,分两种包,数据包和非数据包。对于数据包,头两个字节表示包的序号,剩下的都填充数据。对于非数据包,主要是发送一些控制信息。
监听成功后通过向 writeCharacteristic写入数据实现与服务端的通信。写入方式如下:
其中:value一般为Hex格式指令,其内容由设备通信的蓝牙通信协议规定;
若写入指令成功则回调BluetoothGattCallback中的onCharacteristicWrite()方法,说明将数据已经发送给下位机;
若发送的数据符合通信协议,则服务端会向客户端回复相应的数据。发送的数据通过回调onCharacteristicChanged()方法获取,其处理方式如下:
通过向服务端发送指令获取服务端的回复数据,即可完成与设备的通信过程;
当与设备完成通信之后之后一定要断开与设备的连接。调用以下方法断开与设备的连接:
源码上传在CSDN上了,有需要的可以借鉴。
=====> Android蓝牙Ble通讯Demo示例源码–扫描,连接,发送和接收数据,分包解包
BLE单次写的数据量大小是有限制的,通常是20字节,可以尝试通过requestMTU增大,但不保证能成功。分包写是一种解决方案,需要定义分包协议,假设每个包大小20字节,分两种包,数据包和非数据包。对于数据包,头两个字节表示包的序号,剩下的都填充数据。对于非数据包,主要是发送一些控制信息。
总体流程如下:
1、定义通讯协议,如下(这里只是个举例,可以根据项目需求扩展)
2、封装通用发送数据接口(拆包)
该接口根据会发送数据内容按最大字节数拆分(一般20字节)放入队列,拆分完后,依次从队列里取出发送
3、封装通用接收数据接口(组包)
该接口根据从接收的数据按协议里的定义解析数据长度判读是否完整包,不是的话把每条消息累加起来
4、解析完整的数据包,进行业务逻辑处理
5、协议还可以引入加密解密,需要注意的选算法参数的时候,加密后的长度最好跟原数据长度一致,这样不会影响拆包组包
一般都是Android版本适配以及不同ROM机型(小米/红米、华为/荣耀等)(EMUI、MIUI、ColorOS等)的权限问题
蓝牙开发中有很多问题,要静下心分析问题,肯定可以解决的,一起加油;
⑹ Android手机蓝牙给电脑传文件,总是失败
原因:手机蓝牙的驱动都是和 ROM 内核集成的,所以应该先去把电脑上蓝牙的驱动升级一下,如果还是不行那只能说明 Galaxy Nexus 和电脑不合了。
方法:1,首先打开笔记本电脑的蓝牙开关,一般是在键盘上有个组合键,fn+f9。
2,然后手机的蓝牙应该打开,进行搜索链接,。
3,在手机和电脑都连接好了之后,接下来就要传输文件了,如果是从电脑向手机传输的话直接在要传输的文件上单击右键发送到然后在选择蓝牙。
4,如果是从手机往电脑传输东西,那就要先点击电脑上的接受文件,在用手机蓝牙向电脑传输。
⑺ Android手机用蓝牙接收的文件存储位置在哪里
在内存卡根目录下有个“Bluetooth”文件夹,在这个文件夹里面。
⑻ android手机怎样通过蓝牙传输文件
手机通过蓝牙传输文件的使用方法如下:
1.接收者:进入设定-蓝牙-滑块打开-将设备可见打钩-在可见时间内让对方发送文件-选择是否接收-完成即可。
2.发送者:进入我的文件-长按需要传输的文件不松手-共享通过-蓝牙-打开-扫描设备(接收方需开启可见)-选择接收者-完成即可。
⑼ syu android蓝牙连接方法
syu android蓝牙连接方法先展示代码结构。
蓝牙是一种无线数据与语音通信的开放性全球规范,它以低成本的短距离无线连接为基础,可为固定的或移动的终端设备提供廉价的接入服务。
蓝牙(Bluetooth)是一项短途无线电连接系统,它可以将不同的电子器材连系起来。原理就好像收音机一样,装有蓝牙的电子器材,可以接收外来的讯息,从而进行特定的指令。
蓝牙简介:
不过,蓝牙不但可以接收,也都可以“传送”,因此装有蓝牙的电子器材,能够互相沟通。现在,大部分的电脑配件,如打印机、荧幕等,都要接驳上电线,才可以互传讯息,但蓝牙透过其短途的接收系统,便可以使这些配件在没有驳线下,仍然能够传送指令,做到真正“无线”的世界。
头蓝技术实质内容是为固定设备或移动设备之间的通信环境建立通用的近距无线接口,将通信技术与计算机技术进一步结合起来,使各种设备在没有电线或电缆相互连接的情况下,能在近距离范围内实现相互通信或操作。蓝牙功能可以参考下面的操作打开使用,打开其他设备的蓝牙。
并使其对其他设备可见,打开下拉顶帘,点击蓝牙图标使其变为绿色,跳出提示框,勾选对其他设备可见。点击扫描,搜索到其他设备后,点击该设备名称,双方点确定后配对成功。选择要传输的文件,共享通过蓝牙即可传输文件。