gpt4 book ai didi

android-wifi - WiFi Peer Discovery 的 Android O 问题

转载 作者:行者123 更新时间:2023-12-04 15:30:38 25 4
gpt4 key购买 nike

我正在开发一个 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

服务发现在所有四个设备上都能正常工作。

但是, Pixel XL 上的 P2P 对等点列表始终为空运行 Android 8.0.0 .
其他三个设备一致地发现彼此以及其他杂项设备
在我的办公室周围,例如例如三星电视和我同事的个人电话等。

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

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

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

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

我注意到的奇怪之处在于,当我尝试使用 android.net.wifi.WifiManager.WifiLock 保持 WiFi“堆栈”处于唤醒状态时。
我的应用程序完全停止工作。此外,我必须关闭所有设备的电源并在我删除它们后重新启动它们
关联的 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从通过的额外一个不打扰打电话 requestPeers ?

最佳答案

我有同样的问题。在我的 nexus 5x 上,现在还有 Android O。
而且我也总是得到一个空的 WifiP2pDeviceList。
我认为它在 Android 6 上分配 (?) 有类似问题
SCAN_RESULTS_AVAILABLE_ACTION return empty list in Android 6.0

这个对我有用...

关于android-wifi - WiFi Peer Discovery 的 Android O 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46097660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com