• Android源码分析(六)-----蓝牙Bluetooth源码目录分析


    一 :Bluetooth 的设置应用

    packagesappsSettingssrccomandroidsettingsluetooth*
    蓝牙设置应用及设置参数,蓝牙状态,蓝牙设备等。

    BluetoothDevicePreference.java
    顾名思义,蓝牙设备首选项,也就是蓝牙设备的配置信息,比如是否连接,是否配对,是否可见等等。该类继承了preference类,主要是提供获取蓝牙设备及通知蓝牙设备配置信息变化。

    BluetoothDiscoverableEnabler.java
    蓝牙搜索UI逻辑处理,包括搜索暂停,搜索恢复,及蓝牙开启关闭时的蓝牙搜索处理,以及搜索超时等处理。该类同时使用了broadcast与handle机制,用来处理搜索的状态变化。

    BluetoothEnabler.java
    蓝牙功能的开启/关闭功能处理。

    BluetoothEventRedirector.java
    蓝牙事件转发处理。通过使用broadcast机制,在onstart里面注册了蓝牙的事件权限。

    BluetoothNamePreference.java
    监听蓝牙名字的变化

    BluetoothPairingDialog.java
    是activity,配对时各种提示框及按键事件处理,如用户请求配对,密码输入,密码确认,同意等提示框。

    BluetoothPairingRequest.java
    配对的数据处理,为BluetoothPairingDialog.java提供数据支持,同时启动BluetoothPairingDialog.java activity当蓝牙应用在前台并且屏幕是亮的,否则通知系统需要弹出提示框(比如蓝牙后台提示,通过notification通知提示)。

    BluetoothPermissionActivity.java
    允许连接的提示框处理

    BluetoothPermissionRequest.java
    为BluetoothPermissionActivity.java提供数据支持,若蓝牙在前台并且屏幕是亮的,则启动BluetoothPermissionActivity.java activity,否则使用notification来提示通知。

    RequestPermissionActivity.java
    询问用户是否开启蓝牙及蓝牙搜索,当前蓝牙状态如果是未开启状态,则开启蓝牙及蓝牙搜索;当前蓝牙如果是开启状态,则不处理;当只针对是否开启蓝牙时,则开启蓝牙并不开启蓝牙搜索。

    RequestPermissionHelperActivity.java
    询问用户是否开启蓝牙及蓝牙搜索,一般由RequestPermissionActivity.java启动。

    SettingsBtStatus.java
    蓝牙各种状态的资源显示

    BluetoothSettings.java
    蓝牙设置应用,蓝牙状态变化及设备绑定信息处理等。各个菜单处理主要是通过CachedBluetoothDevice.java来实现。主要有添加蓝牙设备,删除蓝牙设备,点击获取蓝牙设备信息,及创建具体蓝牙设备的菜单等。

    ConnectSpecificProfilesActivity.java
    蓝牙设备耳机、A2DP、SAP相关的设置处理

    DockService.java
    蓝牙Dock相关服务,配置信息的修改,连接的修改等。

    DockEventReceiver.java
    接收各种dock事件,并启动DockService服务。并提供一个结束服务方法。

    CachedBluetoothDevice.java
    提供蓝牙设备的各种属性信息以及提供蓝牙设备连接,配对等方法。

    CachedBluetoothDeviceManager.java
    管理蓝牙设备,包括增加、删除蓝牙设备及通知

    LocalBluetoothManager.java
    提供了一系列蓝牙方法,如开始扫描、结束扫描逻辑处理。

    二 : Bluetooth 的服务应用

    packagesappsBluetoothsrccomandroidluetooth*
    蓝牙FTP,OPP,SAP,BPP等实现。蓝牙传输及配对等实现。

    三 : Bluetooth 免提、耳机及A2DP应用

    packagesappsPhonesrccomandroidphoneBluetooth.
    主要是Bluetooth在其他应用如通话,电话本还有耳机相关的应用。

    四 : Bluetooth 的JAVA类

    frameworksasecorejavaandroidluetooth*
    如BluetoothClass,BluetoothAdapter,BluetoothDevice等。Bluetooth应用就是通过这些类实现。

    五 : Bluetooth 的JNI接口

    frameworksasecorejniandroid_bluetooth_.
    主要是为Bluetooth的JAVA类提供一些底层API支持(C++实现)。如headset,socket等。

    六 : Bluetooth的协议栈支持(Bluez)

    externalluetooth*
    提供蓝牙协议栈支持,android主要是用Bluez协议栈。

    七 : Bluetooth的设备管理库

    systemluetooth*
    应该是属于kernel层(linux核心代码)了,具体还需要了解?

    八 : Bluetooth的kernel层

    kerneldriversluetooth*
    kernel etluetooth*
    linux系统上Bluetooth的核心代码,包括驱动?
    通话应用相关源码分析
    BluetoothAtPhonebook.java
    通过AT命令帮助管理电话本显示

    BluetoothCmeError.java
    扩充的AT命令错误编码

    BluetoothHandsfree.java
    通话中蓝牙耳机,蓝牙免提的管理

    BluetoothHeadsetService.java
    提供蓝牙耳机,蓝牙免提profile

    OPP
    BluetoothOppLauncherActivity.java
    其他应用启动蓝牙的入口。比如通过蓝牙发送功能。发送功能分为发送文件/多个文件/内容三种模式。发送内容的时候,会新建一个临时文件夹来保存发送的内容。发送文件的路径都会保存到数据库中。当蓝牙未启动,则启动BluetoothOppBtEnableActivity.java激活蓝牙,否则启动BluetoothOppReceiver.java处理。

    BluetoothOppBatch.java
    存储并提供一些方法,关于OPP服务共享的传输信息。

    BluetoothOppBtEnableActivity.java
    询问是否开启蓝牙提示框

    BluetoothOppBtEnablingActivity.java
    蓝牙开启进度条处理,包括正常结束和按键取消结束。

    BluetoothOppBtErrorActivity.java
    异常提示框,标题及内容由启动该activity提供。

    BluetoothOppIncomingFileConfirmActivity.java
    询问用户是否接收对方发过来的文件

    BluetoothOppL2capListener.java
    创建L2CAP连接监听线程

    BluetoothOppLiveFolder.java
    创建Live文件夹

    BluetoothOppManager.java
    蓝牙服务层OPP接口。管理蓝牙发送的一些共享数据

    BluetoothOppNotification.java
    蓝牙发送/接收的提示框处理,如用户确认发送接收,发送接收完成等。

    BluetoothOppPreference.java
    蓝牙设备名字及OBEX的配置信息

    BluetoothOppProvider.java
    针对SHARES SHARES_ID LIVE_FOLDER_RECEIVED_FILES 三种情况对DB进行插入,更新,删除等操作。

    BluetoothOppReceiveFileInfo.java
    存储蓝牙接收文件的信息。生成一个唯一的文件名称,避免冲突覆盖。同时在生成文件前做了一些空间是否足够,是否存在外接存储器等判断。

    BluetoothOppReceiver.java
    接收一些OPP的广播消息

    BluetoothOppRfcommListener.java
    创建RFCOMM连接监听

    BluetoothOppSendFileInfo.java
    存储发送的文件信息


    喜欢源码分析系列可参考其他文章:
    Android源码分析(一)-----如何快速掌握Android编译文件
    Android源码分析(二)-----如何编译修改后的framework资源文件
    Android源码分析(三)-----系统框架设计思想
    Android源码分析(四)-----Android源码编译及刷机步骤
    Android源码分析(五)-----如何从架构师的角度去设计Framework框架

  • 相关阅读:
    PE文件解析器的编写(二)——PE文件头的解析
    PE解析器的编写(一)——总体说明
    PE文件详解(九)
    PE文件详解(八)
    06_建造者模式
    05_模板方法模式
    04_抽象工厂模式
    03_简单工厂模式(静态工厂模式)
    02_工厂方法模式
    01_单例模式
  • 原文地址:https://www.cnblogs.com/ljx646566715/p/10893896.html
Copyright © 2020-2023  润新知