Android O蓝牙OPP文件传输源码详解与Intent操作
需积分: 50 64 浏览量
更新于2024-07-18
1
收藏 3.87MB DOC 举报
本资源深入解析了Android O平台上蓝牙对象交换(OBPP,Object Push Protocol)在文件发送和接收过程中的源码细节,特别是与Android Beam功能集成的部分。蓝牙文件共享通常通过隐式Intent机制实现,不指定具体的Activity,而是依赖于Intent Filter的动作(ACTION_SEND或ACTION_SEND_MULTIPLE)、类别(android.intent.category.DEFAULT)和数据(URI和type)来启动相应的Activity。
当用户从第三方应用(如图库、文件管理器)尝试通过蓝牙分享文件时,应用程序会创建一个包含文件URI和MIME类型(例如多媒体类型或文本类型)的Intent。蓝牙OppLauncherActivity接收到这个Intent后,可以从EXTRA_STREAM键中提取默认的文件流,并通过intent.getType()方法获取文件类型。这个Activity的主要职责是处理Intent传递的信息,将其转换为BluetoothOppSendFileInfo对象,该对象包含了文件名、长度、文件类型和实际的文件流,这些信息会被存储在ConcurrentHashMap sSendFileMap中,便于后续使用。
此外,sendFileInfo接口进一步简化了这一过程,它封装了ACTION_SEND_MULTIPLE中的逻辑。接口首先调用BluetoothOppManager的saveSendingFileInfo方法,将文件信息持久化存储在sSendFileMap中,作为Uri的键值对。同时,为了临时存储分享数据,还使用storeApplicationData接口将数据写入SharedPreferences文件(OPPMGR.xml),确保在蓝牙操作完成后可以恢复或访问。
在整个过程中,蓝牙设备的配对和连接、数据传输协议的管理、以及文件权限和安全控制也是关键部分,源码中可能涉及到蓝牙适配器(BluetoothAdapter)、服务(BluetoothService)和相关的蓝牙套接字编程。理解并分析这些源码有助于开发者更好地掌握蓝牙文件传输的实现原理,优化用户体验,并确保在不同Android版本间兼容性。对于希望深入了解蓝牙OPP技术或者为Android应用开发蓝牙功能的开发者来说,这份源码解析具有很高的实用价值。
2016-03-27 上传
2022-04-17 上传
点击了解资源详情
2022-05-08 上传
2022-04-14 上传
2022-09-21 上传
2021-03-04 上传
2012-09-26 上传
wshuang777
- 粉丝: 1
- 资源: 6