没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
23页
通过Android开发实现手机间通过蓝牙传输文件 实验小作业,详细分析 安卓平台提供对蓝牙的通讯栈的支持,允许设备和其他的设备进行无线传输数据。应用程序层通过安卓API来调用蓝牙的相关功能,这些API使程序无线连接到蓝牙设备,并拥有P2P或者多端无线连接的特性。 蓝牙(Bluetooth)是一种短距离的无线通信技术标准。蓝牙协议分为4层,即核心协议层、电缆替代协议层、电话控制协议层和采纳的其它协议层。这4种协议中最重要的是核心协议。蓝牙的核心协议包括基带、链路管理、逻辑链路控制和适应协议四部分。其中链路管理(LMP)负责蓝牙组件间连接的建立。逻辑链路控制与适应协议(L2CAP)位于基带协议层上,属于数据链路层,是一个为高层传输和应用层协议屏蔽基带协议的适配协议。 1、扫描其他蓝牙设备 2、为可配对的蓝牙设备查询蓝牙适配器 3、建立RFCOMM通道(其实就是认证) 4、通过服务搜索来链接其他的设备 5、与其他的设备进行数据传输
资源推荐
资源详情
资源评论
Lanya
MainActivity.java
根据以上代码的结构和功能,我会将它们分为以下几部分:
1. 权限请求和检查
requestPermissions()方法
checkLocationPermission()方法
onRequestPermissionsResult()方法
2. 初始化和设置
onCreate()方法
onStart()方法
onActivityResult()方法
3. 蓝牙设备搜索和配对
discoverDevices()方法
4. 与列表交互
onResume()方法
devicesListView.setOnItemClickListener()方法
这个代码片段是一个名为 lanya 的 Android 项目的 MainActivity 类,它继
承自 AppCompatActivity。这个类主要用于显示已配对的蓝牙设备,并允许用
户选择一个设备进行连接。以下是对代码主要部分的分析:
1. 导入所需的包和类。
2. 声 明 一 些 类 成 员 变 量 , 如 REQUEST_CODE_PERMISSIONS 、
REQUEST_ENABLE_BT、REQUEST_LOCATION_PERMISSION,它们用于请求权
限和启用蓝牙的结果代码。还有 BluetoothAdapter、ArrayAdapter 和
ArrayList 来存储蓝牙设备信息。
3. onCreate 方法是活动创建时调用的方法。在此方法中,请求所需的权限,
获取布局中的 ListView 并设置适配器。然后获取默认的蓝牙适配器,并
检查设备是否支持蓝牙。最后,为 ListView 设置 OnItemClickListener,
当用户选择一个设备时,将启动 ConnectedActivity 并传递所选设备。
4. onResume 方法在活动恢复时调用。在这里,如果蓝牙已启用并且位置权
限已授权,则调用 discoverDevices 方法来获取已配对的设备列表。
5. discoverDevices 方法用于搜索已配对的蓝牙设备。首先清空设备列表,
然后检查蓝牙连接和扫描权限。如果已授权,获取已配对的设备并将其
添加到 ArrayAdapter 和 ArrayList 中。
6. requestPermissions 方法用于请求应用所需的权限。根据 Android 版本,
请求蓝牙连接、扫描和位置权限。
7. checkLocationPermission 方法用于检查位置权限是否已授权。
8. onActivityResult 方法在启用蓝牙的请求结果返回时调用。如果用户允
许启用蓝牙,则调用 discoverDevices 方法。否则,显示提示并结束活
动。
9. onRequestPermissionsResult 方法在请求权限的结果返回时调用。如果
所有权限都被授权,则调用 discoverDevices 方法。否则,显示提示并
结束活动。
onResume()方法是用来触发蓝牙设备搜索的入口,当需要请求权限时,
会 调 用 requestPermissions() 方 法 。 当 请求权限结果返回时,会调 用
onRequestPermissionsResult()方法进行处理。当从系统蓝牙设置页面返
回时,会调用 onActivityResult()方法更新设备列表。discoverDevices()
方法则是用于实际搜索和添加设备的核心逻辑。实现了蓝牙设备发现和连接
功能
10.onStart 方法在活动开始时调用。检查蓝牙是否启用,如果没有启用,
则请求启用蓝牙。
当用户启动应用时,以下是这个程序的执行流程:
1. onCreate:应用启动时,onCreate 方法会被调用。此方法主要完成以下
任务:
请求蓝牙和位置权限。
初始化 ListView 并设置其适配器。
获取默认的蓝牙适配器。如果设备不支持蓝牙,提示用户并结束
活动。
为 ListView 设置项目点击监听器。当用户点击列表项时,启动
ConnectedActivity 并传递选定的设备。
2. onStart:在活动进入“开始”状态时,onStart 方法会被调用。此方法
主要完成以下任务:
检查蓝牙适配器是否为空并且未启用。如果满足条件,则根据权
限情况请求启用蓝牙。
3. onResume:在活动进入“恢复”状态时,onResume 方法会被调用。此方
法主要完成以下任务:
如果蓝牙适配器已启用,调用 discoverDevices 方法获取已配对
设备列表。
4. onActivityResult:当启用蓝牙的请求结果返回时,onActivityResult
方法会被调用。此方法主要完成以下任务:
判断请求结果。如果蓝牙未启用,提示用户并结束活动。
5. onRequestPermissionsResult : 当 权 限 请 求 结 果 返 回 时 ,
onRequestPermissionsResult 方法会被调用。此方法主要完成以下任务:
判断所有请求的权限是否已授权。如果是,则应用继续运行;否
则,提示用户并结束活动。
6. discoverDevices:此方法用于发现并显示已配对的蓝牙设备。它会执行
以下任务:
清空设备适配器和已配对设备列表。
检查是否具有蓝牙连接、扫描和位置权限。如果有权限,则获取
已配对设备并将其添加到适配器和列表中;否则,提示用户需要
权限。
7. requestPermissions:此方法用于请求蓝牙和位置权限。它会执行以下
任务:
检查当前是否具有所需权限。如果没有权限,则请求相应权限。
8. hasBluetoothPermissions:此方法用于检查是否具有蓝牙连接、扫描和
位置权限。它会返回一个布尔值,表示是否具有所需权限。
9. 用户选择设备:当用户从设备列表中选择一个设备时,onItemClick 方
法会被调用。此方法主要完成以下任务:
获取选定设备并启动 ConnectedActivity,将选定的设备作为参
数传递给新活动。
在上述程序执行流程中,我们可以进一步详细地解释应用的逻辑和功能:
1. MainActivity 活动启动时,首先会调用 onCreate 方法。在这个方法中,
应用首先请求蓝牙和位置权限,然后初始化列表视图(ListView),并为
其设置适配器,用于显示已配对的蓝牙设备。
2. 接下来,应用获取系统默认的蓝牙适配器。如果设备不支持蓝牙,应用
会向用户显示一个 Toast 提示消息,并结束活动。
3. onCreate 方法还会为列表视图设置一个项目点击监听器。当用户点击某
个蓝牙设备时,应用会启动 ConnectedActivity 活动并将选定的蓝牙设
备传递给它。ConnectedActivity 是用于处理蓝牙设备连接和数据传输
的活动。
4. 在 onStart 方法中,应用会检查蓝牙适配器是否已启用。如果没有启用,
应用会请求用户启用蓝牙。如果用户拒绝启用蓝牙,应用将显示一个
Toast 提示消息,并结束活动。
5. onResume 方法在活动重新获取焦点时被调用。在这里,应用会调用
discoverDevices 方法,该方法用于发现已配对的蓝牙设备并将它们添
加到列表视图中。这样,用户可以看到所有已配对的设备,并从中选择
一个设备来建立连接。
6. 当应用收到权限请求结果时,onRequestPermissionsResult 方法会被调
用。如果用户授予了所有请求的权限,应用会继续运行并发现已配对的
设备。如果有任何权限被拒绝,应用会显示一个 Toast 提示消息,并结
束活动。
7. 当启用蓝牙的请求结果返回时,onActivityResult 方法会被调用。如果
用户同意启用蓝牙,应用会继续运行并发现已配对的设备。如果用户拒
绝启用蓝牙,应用会显示一个 Toast 提示消息,并结束活动。
8. 用户从设备列表中选择一个设备时,onItemClick 方法会被调用。这时,
应用会启动 ConnectedActivity 并传递选定的设备。在
ConnectedActivity 中,应用将处理蓝牙连接和数据传输。
以上代码的程序流程:
1. 应用程序启动并加载主活动(MainActivity)。
2. 在 onCreate()方法中设置布局并初始化 ListView 和适配器。
3. 检查设备是否支持蓝牙,如果不支持则提示用户并退出应用程序。
4. 在 onStart()方法中检查蓝牙是否已启用。如果没有启用,检查是否授
权了蓝牙和位置权限,如果已授权则请求用户启用蓝牙,否则请求权限。
5. 在 onResume()方法中检查蓝牙和位置权限是否已授权,如果已授权,则
开始搜索蓝牙设备并显示它们的名称和地址。
6. 如果用户点击设备列表中的项目,则会启动 ConnectedActivity,并将
选定的设备传递给它。
7. 在 onActivityResult()方法中处理用户启用蓝牙的结果,如果启用成功,
则开始搜索蓝牙设备。
8. 在 onRequestPermissionsResult()方法中处理用户授权权限的结果,如
果授权成功,则开始搜索蓝牙设备。
9. discoverDevices()方法用于搜索已配对的蓝牙设备并将它们添加到列表
中。
10.当用户授权蓝牙和位置权限时,checkLocationPermission()方法用于检
查是否已授权位置权限。
11.如果用户没有授权必需的权限,应用程序将提示用户并退出。
ConnectedActivity.java
这段代码是一个名为 ConnectedActivity 的 Android 活动。在这个活动中,
应用程序连接到选定的蓝牙设备并允许用户发送文件。以下是代码的详细分析:
1. 在 onCreate 方法中,首先设置布局并初始化视图。然后,通过 Intent
从 MainActivity 获取选定的蓝牙设备。如果设备不支持蓝牙连接,显
示警告。
2. 创建一个 RFCOMM(无线电频率通信)蓝牙套接字,用于连接到蓝牙设备。
UUID 是蓝牙串行端口配置文件(SPP)的通用唯一标识符,用于设备之
间的无线串行通信。
3. 尝试连接到蓝牙设备并获取输出流。如果连接成功,显示相应的消息;
如果连接失败,显示错误信息。
4. 在 sendFileButton 上 设 置 点击监 听器 。 当 用户点 击 按钮时,调 用
selectFile() 方法,该方法使用 Intent 选择器允许用户从存储中选择
一个文件。
5. 当用户选择一个文件并返回结果时,onActivityResult 方法被调用。这
里,创建一个新线程并调用 sendFile() 方法发送文件。
6. 在 sendFile 方法中,通过蓝牙套接字的输出流发送文件。将文件内容
读入缓冲区并通过输出流写入,直到文件结束。发送成功后,显示
Toast 提示;发送失败时,显示错误信息。
7. 在 onDestroy 方法中,关闭蓝牙套接字以释放资源。
8. initView() 方法用于初始化视图,例如 TextView。
总之,这个活动连接到选定的蓝牙设备并允许用户选择一个文件发送到设备。
文件发送完成后,显示相应的成功或失败信息。
以下是 ConnectedActivity 的详细执行流程和数据流:
1. 当 ConnectedActivity 启动时,onCreate() 方法首先被调用。该方法
设置活动的布局,初始化视图组件,并从 MainActivity 获取传递过来
的选定蓝牙设备。
2. 接着,尝试使用设备的 UUID 创建一个蓝牙套接字并连接到蓝牙设备。
UUID 是一个用于蓝牙串行端口配置文件(SPP)的通用唯一标识符,用
于设备之间的无线串行通信。
3. 如果连接成功,应用程序会在 TextView 中显示连接成功的消息。如果
连接失败,显示错误信息并退出。
4. 用户可以点击“发送文件”按钮。点击事件触发 onClick() 方法,该方
剩余22页未读,继续阅读
资源评论
dddylann
- 粉丝: 3
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功