android - Android WiFi直接请求Peers没有在附近找到任何对等点
问题描述
背景:使用的设备:三星 Galaxy Note 10+、三星 Galaxy S8
- 我正在开发一个使用 WiFi-direct 传输照片的 Android 应用程序。
- 为此,我首先在两个设备之间建立 BLE 连接,以便它们可以通过 BLE 特性交换 macAddress 数据。
- 在“OnServiceDiscovered”回调方法中发现蓝牙服务后,我调用“discoverPeers”方法。
- 当“discoverPeers()”成功时,WifiP2PManager 调用“requestPeers(channel, PeerListListener)”
- 奇怪的是,尽管存在许多 wifi 设备,但 wifi 设备列表始终是空的。
这是代码
public void discoverWifiPeers() {
manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Log.e("INFO", "Discover Peers succeeded");
manager.requestPeers(channel, myPeerListListener);
}
@Override
public void onFailure(int reasonCode) {
Log.e("Error", "Discover Peers failed");
}
});
}
private WifiP2pManager.PeerListListener myPeerListListener = new WifiP2pManager.PeerListListener() {
@Override
public void onPeersAvailable(WifiP2pDeviceList wifiP2pDeviceList) {
for (WifiP2pDevice device : wifiP2pDeviceList.getDeviceList())
{
if(!wifiDeviceList.contains(device))
wifiDeviceList.add(device);
}
Log.i(CommonConstants.INFO, "onPeersAvailable() - devicelist =>" + wifiDeviceList.size());
}
};
我采取的措施:
- 我为此搜索了很多博客和 StackOverflow 问题,到目前为止,它们都指向了粗略的位置权限。我在下面添加了代码。
private void requestCoarseLocation(){
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_COARSE_LOCATION)) {
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
CommonConstants.REQUEST_COARSE_LOCATION
);
}
}
}
}
- 它在我第一次添加 COARSE_PERMISSION 时给出了 Wifi 设备列表,但在那之后它又恢复显示 WiFi 列表的空列表。
如何始终保证附近有设备的 wifi 设备列表?
解决方案
推荐阅读
- reactjs - usereducer 不会更新状态
- javascript - 通过调节另一个对象属性来访问对象数组中的对象值
- c# - 在 Xamarin 表单中重置选取器显示值
- java - Quarkus 读取 `ResultSet` 并使用多线程处理
- tensorflow - 我在使用 tensorflow-gpu 时遇到问题。分配器 (GPU_0_bfc) 内存不足,试图在 freed_by_count=0 的情况下分配 2.20GiB
- jquery - 附加在调整大小和加载多个实例
- sql - 调整结束日期
- wordpress - 更改 WooCommerce 电子邮件字体系列
- hibernate-criteria - 标准规范 - 如何编写泛型类以通过实体的任何枚举字段过滤实体
- java - 如何制作具有灵活标准的随机字符串生成器?