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 

サービス検出4つのデバイスすべてでうまく動作します。

Pixel XLAndroid 8.0.0を実行している場合、P2Pピアリストは常に空です。 他の3つのデバイスは、一貫してお互いを発見し、私のオフィスの周りのその他のデバイス などを発見します。サムスンのテレビや私の同僚の携帯電話など。

唯一のことは、約Android Oは、P2Pのピアを発見することを禁止していることです。 原因を特定するために「What's New In Android O」に何も表示されません

Android Oでこの動作を見たことがありますか?私は間違って何をしていますか?私は何が欠けていますか?

私は自分のアプリケーションを基づか午前のコード私が気づいたことを奇妙な何かが私はandroid.net.wifi.WifiManager.WifiLock を使用して目を覚ましWiFiの「スタック」を維持しようとしたときにということでしたここ

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

を発見されます私のアプリケーションは完全に動作しなくなりました。 WiFiLockコードに関連付けられた を削除した後は、さらにすべてのデバイスの電源を切って再起動しなければなりませんでした。そしてはい...私はuse-permission android:name="android.permission.WAKE_LOCK"を追加しました。

UPDATE -

0001いただきました奇数私はPEER_CHANGEDのための私の放送受信機で利用可能エキストラをログアウト時にAndroidの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を使用することになって?

答えて

1

私は同じ問題を抱えていました。私のネクサス5xでは今でもアンドロイドO. そして、私はいつも空のWifiP2pDeviceListも持っています。 私はそれが割り当てだと思う(?)同様の問題とAndroidの6 SCAN_RESULTS_AVAILABLE_ACTION return empty list in Android 6.0

にそれは私の作品...

関連する問題