4

서비스 검색 및 P2P 피어 검색/연결에 WiFi (직접)를 사용하는 Android 애플리케이션을 개발 중입니다. 다음과 같이WiFi 피어 디스커버리와 관련된 Android O 문제

내 개발 enviromment은 다음과 같습니다 -

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 

서비스 발견 네 장치 모두에서 잘 작동합니다.

Android 8.0.0을 실행하는 Pixel XL에서 P2P 피어 목록은 항상 비어 있습니다. 다른 세 장치는 내 사무실 주변의 기타 장치와 기타 장치를 지속적으로 검색합니다. 예 : 삼성 TV와 내 동료 개인 휴대 전화 등.

내가 생각할 수있는 유일한 점은 P2P 피어가 발견되는 것을 막는 약 Android O에 관한 것입니다. 범인을 식별하기 위해 "What 's New In 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 를 사용 깨어 와이파이 "스택"을 유지하려고 할 때 내 응용 프로그램이 모두 작동을 멈췄습니다. 더 이상 나는 모든 장치의 전원을 끄고 WiFiLock 코드를 제거한 후에 다시 시작해야했습니다. 그리고 예 ... 나는 사용 권한 -을 추가했습니다.

UPDATE -

0001 무슨 이상한 내가 PEER_CHANGED 내 방송 수신기에서 사용할 수있는 엑스트라를 로그 아웃 할 때 안드로이드 O 픽셀 XL 내 넥서스

을 발견했을 때 나는 다음과 같이 열거 가능한 동료를 볼 수 있다는 것입니다
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; 

오전 나는 requestPeers 전화를 귀찮게하지 않은 전달 된 여분의 WifiP2pDeviceList를 사용하는 가정?

답변