蓝牙PAN协议源码解析

1,概述

1.1 PAN协议

Dun协议: Dial_Up Networking Profile 拨号上网协议

PAN协议:Personal Area Networking Profile 个人局域网协议

使用场景:手机和手机,手机和笔记本等设备通过连接蓝牙上网。

市场产品:手机,笔记本

 

1.2 代码路径

客户端: frameworks\base\core\java\android\bluetooth

  BluetoothDun.java            Dun协议客户端

  BluetoothPan.java            Pan协议客户端

服务端: packages\apps\Bluetooth\src\com\android\bluetooth\ pan

PanService.java                      Pan协议的服务端

BluetoothTetheringNetworkFactory.java   蓝牙网络连接

 

奇怪的是BluetoothDun.java并没有对应的服务端,在源代码上面的确是找不到。

对于NetworkFactory我完全不懂,而且一般的智能手机上面也已经实现了该功能,可以将一台手机A连接wifi,另一台手机B通过蓝牙和A相连,在设置里打开蓝牙网络共享,B也可以利用Pan协议上网了。这个实现很简单, NetworkFactory我不懂我就不多论述了,仅论述一下BluetoothPan.java的接口以及如何利用其上网。

2,接口

接口如下

Connect接口用于设备之间的连接的,这是所有其他功能的基础,其他中间4个接口就不多说了,从名字就可以看出其意思。

    setBluetoothTethering接口,传入参数为true就可以上网了,在这之前,调用isTetheringOn接口来判断是否正在上网。

自己开发时,首先调用BluetoothAdapter的getProfileProxy方法获取BluetoothPan对象,然后调用其isTetheringOn方法判断是否正在上网,最后调用setBluetoothTethering方法进行网络连接。

If(!mBluetoothPan. isTetheringOn){
     setBluetoothTethering(true);
}

如此这样,就可以上网了。

3,小结

pan协议虽然使用简单,但是BluetoothTetheringNetworkFactory网络方面我完全不懂,以后可以研究研究。

1, BluetoothTetheringNetworkFactory在PanService.java的start方法中初始化,由onStartCommand方法调用。

2,在PanService.java的handlePanDeviceStateChange方法中根据当前的连接状态

分别调用BluetoothTetheringNetworkFactory的startReverseTether和

stopReverseTether方法,真不知道上网的机制和原理是什么。

3, BluetoothDun.java的服务端在哪儿呢?


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值