私は実際のアンドロイドデバイス(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
アンドロイドの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