1

在 android 中,蓝牙适配器是使用getDefaultAdapter()call 访问的,但是 WifiManager 和 Connectivity Manager 是使用getSystemService(Context.WIFI_SERVICE)and访问的getSystemService(Context.CONNECTIVITY_SERVICE)。为什么android人会这样区分蓝牙访问。有什么原因吗?

4

2 回答 2

1

要获取代表本地蓝牙适配器的 BluetoothAdapter,

在 JELLY_BEAN_MR1 及以下运行时,调用静态getDefaultAdapter()方法;

在 JELLY_BEAN_MR2 及更高版本上运行时,getSystemService(String)使用BLUETOOTH_SERVICE.

资源

于 2014-11-12T09:02:08.237 回答
0

我将尝试按照我的理解从逻辑上解释它。据我了解,蓝牙适配器是适配器,而连接管理器和 WIFI 是管理器。

笼统地说,我们称适配器就像一个连接无法直接连接的设备的设备。经理是控制实体活动的人(这里分别是 WIFI 和 Connection)。如果您在 android 文档中看到Bluetooh Adapter的定义,它会说:

It lets you perform fundamental Bluetooth tasks, such as initiate device discovery, query a list of bonded (paired) devices, instantiate a BluetoothDevice using a known MAC address, and create a BluetoothServerSocket to listen for connection requests from other devices.

因此,它充当您的应用程序/UI 和蓝牙之间的桥梁(适配器),为您提供数据。现在getDefaultAdapter()函数适用Bluetooth Adapter于 Connectivity Manager 或 WIFI,但不适用于 Connectivity Manager 或 WIFI,因为 Android 目前仅支持一个蓝牙适配器(您可以从链接中阅读)。所以只获取默认的本地适配器是有意义的。这可能是蓝牙适配器出现getDefaultAdapter 的原因:

现在,如果您看到Connectivity Manager类,文档会说: The class answers queries about the state of network connectivity. It also notifies applications when network connectivity changes.

对于WifiManager类,文档说: The class provides the primary API for managing all aspects of Wi-Fi connectivity

因此,连接管理器管理网络连接的所有方面,而 Wifi 管理器管理 Wi-Fi 连接的所有方面。它们不是像蓝牙适配器那样充当桥接器的适配器。当我们谈论两个不同的事情时,这可能是实现不同的原因。

我希望这可以帮助你。

于 2013-05-24T04:12:51.210 回答