Android O 的 WiFi 对等发现问题

2024-05-10

我正在开发一个 Android 应用程序,它使用 WiFi(直接)进行服务发现和 P2P 对等发现/连接。

我的开发环境如下:-

Android Studio 3.0 Beta 4
Build #AI-171.4304935, built on August 29, 2017
JRE: 1.8.0_152-release-915-b01 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.11.6

我的 Gradle 构建:-

apply plugin: 'com.android.application'
apply plugin: 'realm-android'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.research.wifi_direct"

        minSdkVersion 19
        targetSdkVersion 26

        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    buildTypes {

        debug {
            buildConfigField "String", "INSTANCE_NAME", "\"_vascodagama\""
            buildConfigField "String", "SERVICE_TYPE", "\"_presence._tcp\""
        }

        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:26.0.2'
    implementation 'com.android.support:recyclerview-v7:26.0.2'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'

    implementation 'com.yarolegovich:lovely-dialog:1.0.7'

    implementation 'io.realm:android-adapters:2.1.0'


    testImplementation 'junit:junit:4.12'

    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
}

我正在测试的设备包括:-

Nexus 7 - Android 6.0.1
Nexus 9 - Android 7.1.1
Samsung Tablet - Android 4.4.1
Pixel - Android 8.0.0 

服务发现在所有四个设备上都运行良好。

然而,P2P 对等点列表始终为空Pixel XL跑步Android 8.0.0。 其他三个设备始终发现彼此以及其他各种设备 我的办公室周围,例如例如三星电视和我同事的个人电话等。

我唯一能想到的是有一些关于Android O阻止发现 P2P 对等点。 我在“Android O 的新增功能”中看不到任何内容来识别罪魁祸首

有没有人在上面看到过这种行为Android O?我究竟做错了什么?我缺少什么?

我的应用程序所基于的代码可以在这里找到

https://developer.android.com/training/connect-devices-wireless/wifi-direct.html https://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html https://developer.android.com/training/connect-devices-wireless/nsd-wifi-direct.html https://developer.android.com/training/connect-devices-wirelessly/nsd-wifi-direct.html

我注意到一个奇怪的事情是,当我尝试使用一个android.net.wifi.WifiManager.WifiLock我的应用程序完全停止工作。此外,我必须关闭所有设备的电源,然后在移除设备后重新启动它们。 关联的 WiFiLock 代码。是的...我确实添加了使用权限android:name="android.permission.WAKE_LOCK".

更新 - 0001

奇怪的是,当我注销广播接收器中 PEER_CHANGED 可用的额外内容时,当 Android O Pixel XL 发现我的 Nexus 时,我可以看到列出的可用对等点如下所示

WiFiDirectBroadcastRcvr: android.net.wifi.p2p.PEERS_CHANGED<<<<<EXTRA DATA :: ------------------------START
WiFiDirectBroadcastRcvr: EXTRA DATA :: wifiP2pDeviceList 
                         Device: Nexus 7
                          deviceAddress: da:50:e6:7c:56:4e
                          primary type: 000A0050F2040005
                          secondary type: null
                          wps: 392
                          grpcapab: 0
                          devcapab: 37
                          status: 3
                          wfdInfo: WFD enabled: trueWFD DeviceInfo: 0
                          WFD CtrlPort: 0
                          WFD MaxThroughput: 0 (android.net.wifi.p2p.WifiP2pDeviceList)
WiFiDirectBroadcastRcvr: EXTRA DATA :: ------------------------FINISH

然而,当我随后调用 requestPeers 时,我总是收到一个空的WifiP2pDeviceList?

case WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION:
                Log.d(TAG, "onReceive: WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION");
                mWiFiPeer2PeerCommander.requestPeers(mWifiP2pManager, mWifiP2pManagerChannel);
                break;

我应该使用WifiP2pDeviceList从通过的 Extra 不用费心打电话requestPeers?


我有同样的问题。我的 Nexus 5x 上现在也有 Android O。 而且我也总是得到一个空的 WifiP2pDeviceList。 我认为在 Android 6 上分配(?)有类似的问题SCAN_RESULTS_AVAILABLE_ACTION 在 Android 6.0 中返回空列表 https://stackoverflow.com/questions/32151603/scan-results-available-action-return-empty-list-in-android-6-0

这个对我有用...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android O 的 WiFi 对等发现问题 的相关文章

  • 如何通过ADB关闭Wifi?

    我正在自动化 wifi 呼叫的测试程序 我想知道有没有办法通过 adb 关闭 打开 wifi 我想禁用 启用 wifi 或终止 wifi 呼叫 com movi al wificall 并重新启动它 是否可以通过 adb 和 shell 命
  • Android 通知未在 API 26 上显示

    我最近将我的应用程序更新到 API 26 并且通知不再起作用 甚至没有更改代码 val notification NotificationCompat Builder this setSmallIcon R drawable ic noti
  • 通知通道在奥利奥中播放错误的声音

    我在运行 Android Oreo 的设备中遇到了NotificationChannel 声音的奇怪问题 假设我的项目原始目录中有两个声音文件 a mp3 c mp3 然后 在第一次安装应用程序时 我使用它们的 uri 例如 将这些声音分配
  • Android O - 关闭通知通道然后再打开,重要性级别始终重置为中

    在Android O中 我们可以拥有不同优先级 重要性 的不同通知渠道 在我的代码中 我将频道重要性级别设置为 紧急 即 发出声音并在屏幕上弹出 但是 当我进入通知设置 关闭频道通知 然后将其打开时 重要性级别将始终重置为中 无声音 这是默
  • Jelly Bean 问题 - wifiManager.getConnectionInfo().getSSID() - 额外的“”

    您好 所有错误报告仅供参考 问题详情 The Code wifiManager getConnectionInfo getSSID 上面的代码返回当前的 SSID 它返回当前的 SSID 并在其周围加上额外的引号 例如 服务集标识符inte
  • Docker swarm:如何手动设置节点名称?

    有关我的环境的一些背景 我有 docker swarm 在 3 个 ubuntu 14 04 vagrant 盒子上运行 swarm master 在一台机器上运行 带有 consul 另外 2 台机器正在运行加入到 master 的 Sw
  • 如何在 Android Oreo 中管理来自未知来源的安装?

    在 Android Oreo 8 0 中 对如何允许安装来自未知来源的应用程序 从用户的角度来看 以及获取安装权限的过程 从开发人员的角度来看 进行了一些更改 由于我发现在开发人员方面找到所有必要的步骤特别困难 因此我认为在这里询问解决方案
  • 获取设备的 IMEI 代码或/和 Mac 地址

    我正在实施一种唯一标识设备的方法 建筑师向我发送了以下规格 带 Wifi 3G 的设备 IMEI 代码 设备 仅 Wifi MacAddress 两者还需要制造商 型号来完成 ID 我的问题是 如何从设备获取 IMEI 如何从设备获取制造商
  • 在 Android 10 上以编程方式断开 Wifi

    I use WifiNetworkSuggestion以编程方式将我的应用程序连接到我的热点 但是当我尝试以编程方式断开此连接时 我使用了removeNetworkSuggestions就像文档提到的那样 删除之前的部分或全部网络建议 由应
  • 定制频道wifi直连

    谁能告诉我 有没有自定义 wifi direct 频道的选项 我不仅需要在 ch1 ch6 和 ch11 之间进行自定义 还需要在我选择的其他频道中进行自定义 我怎样才能做到这一点 要更改设备 Wifi Direct 的频道 您需要执行以下
  • Android O 预览版 findViewById 编译错误

    我尝试测试Android O Developer Preview第二阶段 项目创建后 我只是点击构建并运行 但没有任何成功 Android默认生成的代码如下 Toolbar toolbar Toolbar findViewById R id
  • 来自本机的 Android O 设备序列号

    在 Android O 上从本机获取序列号而不调用 Java 的正确方法是什么Build getSerial 在 Android string serial read property ro boot serialno string rea
  • 广播接收器在 android oreo 中不工作

    我的广播接收器无法在奥利奥上工作 但它在奥利奥下工作 工作正常 我对此进行了很多搜索 但找不到合适的解决方案 有没有人遇到同样的问题 这是我的关于已实现广播的服务的代码 请建议我如何在奥利奥中工作 这是班级 public int onSta
  • WifiConfiguration 在 Lollipop 中启用网络

    我正在研究 Wifi 项目 有一个模块可以让用户以编程方式加入 wifi 在 kitkat 及以下版本中它可以成功工作 但在 Lollipop 中它不起作用 这是代码 WifiManager wifiManager WifiManager
  • 微服务、amqp 和服务注册/发现

    我正在研究微服务架构 实际上我想知道一些事情 我非常同意使用 返回 服务发现来在基于 REST 的微服务上发出请求 我需要知道发出请求的服务 或至少是服务器集群的前端 在哪里 因此在这种情况下能够发现 ip port 是有意义的 但我想知道
  • Context.startForegroundService 然后没有调用Service.startForeground

    这是我的 BroadcastReciever 类 该类处理启动电话状态 Code public class BroadCastRecieverBoot extends BroadcastReceiver Override public vo
  • 使用 Android O 的“android:fontFamily”时出现错误“文件名必须以 .xml 结尾”?

    Android O 引入了一项新功能 XML 中的字体 它允许您将字体用作资源 我正在创建font资源文件中的文件夹 由安卓开发者 https developer android com preview features working w
  • 连接到具有相同 SSID 的最强接入点(信号最强的接入点)

    我正在编写一个程序来始终连接到最强的接入点 我的意思是信号最强的接入点 首先 我扫描所有可用的 WiFi 网络 然后限制它们仅查看具有相同 SSID 的网络 这样我就可以看到一个网络的所有AP 当我连接到该网络时 它没有连接到最强的信号 但
  • Oreo:应用程序未运行时不会触发警报

    我有相对简单的设置 应该在一天中的特定时间触发警报并向用户显示通知 这是相关代码 设置闹钟 long inTime expirationTime Calendar getInstance getTimeInMillis 10000 Inte
  • 使用 WiFi 获取位置详细信息

    我正在 Android 中创建一个小应用程序 它指向当前位置 我已经使用了 GPS 提供商 但发现在某些地方我无法使用 GPS 提供商获取数据 任何人都可以帮我得到这个吗 如果您已连接到 WIFI 则只需使用网络提供商即可更新您的位置 他们

随机推荐

  • 登录方式使用GINA定制

    我知道在 GINA 中找到大师并不容易 但我的问题最接近进程间通信 IPC 我用非托管 c 编写了我的自定义 GINA 我在其中包含了一个方法来检查用户尝试的指纹的有效性为了登录 该函数将调用正在运行的系统Windows服务中用C 编写的一
  • 使用 jquery 迭代 json 数组

    已经有一些帖子和我遇到了类似的问题 如何使用 PHP 中的 jQuery AJAX 调用迭代 JSON 数组 https stackoverflow com questions 6472338 how do i iterate over a
  • 没有函数或 json 的 JavaScript 大括号

    刚刚打开客户端的 javascript 文件 第一行是这样的 var s account blog 我不明白 通常 根据我的经验 花括号包裹着一个函数 function welcome or a json JavaScript object
  • 允许 Kubernetes 用户列表/获取命名空间

    我有以下用户清单 我希望允许 myapp user 获取集群内所有命名空间的列表 根据我的查找 我应该创建一个 ClusterRole 但我无法真正找到足够的详细信息 是否有所有 apiGroup 以及相应资源和动词的列表 apiVersi
  • 自动安排并执行 PHP 脚本

    我编写了一个 PHP 脚本 它生成一个包含数据库中所有表的 SQL 文件 我想要做的是每天或每 n 天执行这个脚本 我读过有关 cron 作业的内容 但我使用的是 Windows 如何在服务器上自动执行脚本 您需要添加计划任务来调用 URL
  • 如何从特定索引渲染 v-for

    我想在 v for 中循环假设从数字 5 到 10 循环希望在 5 点开始并在 10 点结束 我试过这个 div div 但我想要更有效的循环方式 有谁知道如何让循环从 5 开始 对于你的例子来说是可能的 div some code her
  • 如何使用ffmpeg重叠和合并多个音频文件?

    我正在尝试将多个音频文件合并到一个文件中 但我可以使用以下命令来连接 而不是连接 ffmpeg v debug i file1 wav i file2 wav i file3 wav filter complex 0 0 concat n
  • 使用多个构造函数创建不可变类

    我正在阅读这一页 https docs oracle com javase tutorial essential concurrency imstrat html关于在 Java 中创建不可变类 并决定根据页面上概述的规范修改我正在编写的类
  • 从剪贴板获取文本后将一个字符串插入另一个字符串所需的建议

    简介及相关信息 我有一个edit control只需要接受带符号的十进制数 类似于 12 35 我决定通过以下方式实现这一点subclassing The WM CHAR处理程序似乎运行良好 我需要处理其他几条消息以完全保护用户免于输入无效
  • MVC 6 控制器中的 ControllerContext 和 ViewEngines 属性在哪里?

    我创建了一个新的 MVC6 项目并构建了一个新站点 目标是获得视图的渲染结果 我找到了以下代码 但我无法让它工作 因为我找不到ControllerContext和ViewEngines 这是我要重写的代码 protected string
  • 如何通过 eBay API 获取 PayPal TransactionID

    我需要通过 API 获取 eBay 上已付款订单的 PayPal TransactionID 我使用外部事务 如下所述 https ebay custhelp com app answers detail a id 1550 linking
  • 正确地将 flash.utils.Dictionary 序列化为 SharedObject

    我的 Flex 项目中有一个名为 HashMap 的便利集合类 它本质上是 flash utils Dictionary 的包装器 带有一堆便利方法和添加的 同步的 ArrayCollection 以便我可以将 HashMap 传递给需要的
  • Lua 将字符串转换为数字 - 取决于语言环境

    刚刚注意到字符串 and tonumber 在 Lua 中是依赖于语言环境的 知道如何在不使用的情况下将字符串转换为数字tonumber 谢谢 例如将字符串 58 5 转换为 58 5 另外 当我尝试将带点的数字传递给函数时 该函数会转换
  • git rebase -i ——为什么它改变提交哈希值?

    所以我或多或少熟悉变基的工作原理 但直到最近我通常只做了一个git rebase i HEAD 20 并修改了需要修改的内容 我很惊讶地发现这将修改所有 20 个提交的哈希值 即使我采取的唯一操作是压缩最后两个提交 我不确定是什么导致其他
  • AudioKit - 立体声通道从输入翻转到输出?

    我正在使用 AudioKit 创建一个实验性 iOS 音频应用程序 目前 我正在尝试将 AKStereoInput 的左声道重新路由到 AudioKit output 的右声道 并将 AKStereoInput 的右声道重新路由到输出的左声
  • SSE(EventSource):为什么不超过6个连接?

    我想看看在我的机器超载之前我可以设置多少个并发 SSE 又名 EventSource 连接 但使用 Firefox Firefox 18 或 Firefox 20 进行测试时 它在 6 个连接处停止 附加连接没有给出错误 但不发送任何数据
  • 如何在 Python 中将图像分割成多个部分

    我正在尝试使用 PIL 将一张照片分成多块 def crop Path input height width i k x y page im Image open input imgwidth im size 0 imgheight im
  • WPF XAML 绑定和 CurrentCulture 显示

    当 CurrentCulture 更改时 我发现 XAML 文档出现一些无效行为 当我在窗口中有一些这样的元素时
  • Swift callkit 有时无法在接听电话后激活扬声器(仅限来电)

    在关注 Marco评论后 我更新了如下代码 但仍然无法正常工作 扬声器有时无法启用 在报告新呼叫 用户接受的呼叫之前 我调用了以下 2 种方法 configureAudioSessionToDefaultSpeaker func confi
  • Android O 的 WiFi 对等发现问题

    我正在开发一个 Android 应用程序 它使用 WiFi 直接 进行服务发现和 P2P 对等发现 连接 我的开发环境如下 Android Studio 3 0 Beta 4 Build AI 171 4304935 built on Au