2016-04-03 5 views
0

私は実際のアンドロイドデバイス(Android 4.1.1)を持っています。 Xender、ShareIt、Zapyaなど、WiFi Directを使用してファイルを転送するアプリケーションなどをサポートしています。WiFiの直接返品P2P_UNSUPPORTED

私のアプリケーションを実行すると、P2P_UNSUPPORTEDと表示されます。

私のマニフェストにアクセス権がある....

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

私MainActivity.javaは、このようなものです。..ログイン

intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); 
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION); 
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION); 
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION); 
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION); 

    Receiver receiver=new Receiver(); 
    registerReceiver(receiver,intentFilter); 

    WifiP2pManager manager=(WifiP2pManager)getSystemService(WIFI_P2P_SERVICE); 
    channel=manager.initialize(this, Looper.getMainLooper(),null); 

    manager.discoverPeers(channel, new WifiP2pManager.ActionListener() { 

     @Override 
     public void onSuccess() { 
      // Code for when the discovery initiation is successful goes here. 
      // No services have actually been discovered yet, so this method 
      // can often be left blank. Code for peer discovery goes in the 
      // onReceive method, detailed below. 
     } 

     @Override 
     public void onFailure(int reasonCode) { 
      // Code for when the discovery initiation fails goes here. 
      // Alert the user that something went wrong. 
      switch (reasonCode){ 
       case WifiP2pManager.BUSY:Log.e("code","BUSY");break; 
       case WifiP2pManager.ERROR:Log.e("code","ERROR");break; 
       case WifiP2pManager.P2P_UNSUPPORTED:Log.e("code","P2P_UNSUPPORTED");break; 

      } 
     } 
    }); 

,,私が得ます。

code﹕ P2P_UNSUPPORTED 

そして、私のBraodcastReceiverは次のように..です

@Override 
public void onReceive(Context context, Intent intent) { 
    //Log.e("intent",intent.getAction()); 

    int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1); 
    Log.e("raw state", ""+state); 
    if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) { 
     Log.e("state", "ON"); 
    } else if(state == WifiP2pManager.WIFI_P2P_STATE_DISABLED) { 
     Log.e("state", "DISABLED "+ state); 
    } 
} 

そしてそこに私は,,

raw state﹕ -1 

NOTEとしてログを取得:変数状態はどちらもWifiP2pManageと同じではありませんr.WIFI_P2P_STATE_ENABLEDまたはWifiP2pManager.WIFI_P2P_STATE_DISABLED

+0

アンドロイドのWi-Fiダイレクトのデモを実行してみて、P2Pが動作するかどうかを参照してください。https://github.com/android/platform_development/tree/master/samples/WiFiDirectDemoここ は同様にいくつかの他のAndroidのWi-Fiダイレクト資源であります: https://groups.google.com/forum/#!topic/wi-fi-direct/uWpuOzHY6y0 – Brendan

答えて

1

あなたがリストしたアプリケーションがWi-Fi Direct以外の代替トランスポートを使用する可能性があります。 P2P_UNSUPPORTEDエラーは、お使いのデバイスにWi-Fi Direct機能がないことを示しています。これを確認するには、getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_DIRECT)を実行してみてください。また、デバイスにWi-Fi Directがある場合は、デバイスのWi-Fi設定からWi-Fi Direct設定アクティビティにアクセスできます。