为什么android.bluetooth.BluetoothAdapter#listenUsingL2capOn(int)无法访问?

问题描述 投票:1回答:1

这可能是一个新手的问题,因为我对Android的经验有限,但由于某些原因,我无法访问方法 android.bluetooth.BluetoothAdapter#listenUsingL2capOn(int). 它似乎是公开的,因此,真的不知道为什么符号不被识别。另外,如何在android上打开L2CAP蓝牙socket服务器?只有一个问题,我发现有点相关的------------------------------------------------。如何在Android中实例化一个L2Cap socket?. 任何帮助将被感激。

android bluetooth android-source l2cap bluetoothadapter
1个回答
1
投票

在Android中,我们有两个不同级别的公共方法。

  • Java级别的公共方法。这是由 public 关键字。
  • 安卓级别的公共。这是由 @hide 注解。如果一个方法没有使用 @hide 注解在其JavaDoc中。

如果一个方法是Java级别的public,但不是Android级别的public,这意味着它只能在Android框架代码中使用,而不能被应用程序代码使用。这是为了保持Android API尽可能小的需要。当Android开发者在Android框架代码中的很多地方添加了一个有用的帮助方法时,他们会希望这个方法是Java级别的public,这样它就可以被Android框架代码中的其他类使用。但是,Android开发者可能不希望这个帮助方法被应用代码使用,因为这样的话,如果他们以后重新修改代码,不再需要这个帮助方法,那么删除这个方法就会破坏使用它的应用。不把这个方法做成Android级别的公开,就给了Android开发者更多的自由度,让他们以后可以随意更改删除这个方法。

比如考虑到你给出的方法。listenUsingL2capOn@hide 注释,可以看出 此处. 因此,它不被认为是Android级别的公共。你也可以从以下API文档中看到这一点 BluetoothAdapter,它并没有列出不是Android级别的公共方法(联系).

关于你的侧面问题。我不熟悉如何在安卓系统中创建一个L2CAP蓝牙套接字服务器 但你链接的答案看起来很有希望。例如,使用 BluetoothDevice#createL2capChannelBluetoothAdapter#listenUsingL2capChannel. 请注意,后者的名称不同于 listenUsingL2capOn.

© www.soinside.com 2019 - 2024. All rights reserved.