2014-02-28 19 views
0

我试图创建使用WiFi Direct API的应用程序测试的应用程序。 I“现在用的代码与波纹管2类:如何使用Wi-Fi直接的API

1-类Wi-Fi直连:


package com.example.wifi_direct; 

import android.net.wifi.p2p.WifiP2pManager; 
import android.net.wifi.p2p.WifiP2pManager.Channel; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.IntentFilter; 
import android.view.Menu; 

public class WifiDirect extends Activity { 


    WifiP2pManager mManager; 
    Channel mChannel; 
    BroadcastReceiver mReceiver; 

    IntentFilter mIntentFilter; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     //To register the BroadastReceiver 
     mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); 
     mChannel = (Channel) mManager.initialize(this, getMainLooper(), null); //It was necessary to make a cast (Channel) 
     mReceiver = new WiFiBroadcastReceiver(mManager, mChannel, this, this); 


     //To define the filter in the BroadcastReceiver 
     mIntentFilter = new IntentFilter(); 
     mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION); 
     mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION); 
     mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION); 
     mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION); 


    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    // 


    @Override 
    protected void onResume() { 
     super.onResume(); 
     registerReceiver(mReceiver, mIntentFilter); 
    } 

    // unregister the broadcast receiver 
    @Override 
    protected void onPause() { 
     super.onPause(); 
     unregisterReceiver(mReceiver); 
    } 

} 

2 - 类WiFiBroadcastReceiver:


package com.example.wifi_direct; 


import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.net.wifi.p2p.WifiP2pManager; 
import android.net.wifi.p2p.WifiP2pManager.Channel; 
import android.widget.Toast; 



/** 
* A BroadcastReceiver that notifies of important Wi-Fi p2p events. 
*/ 

public class WiFiBroadcastReceiver extends BroadcastReceiver { 

    private WifiP2pManager manager; 
    private Channel channel; 
    private WifiDirect activity; 
    //For toast, add also context 
    private Context context; 

    public WiFiBroadcastReceiver(WifiP2pManager manager, Channel channel, WifiDirect activity, Context context) { 
     super(); 
     this.manager = manager; 
     this.channel = channel; 
     this.activity = activity; 
     this.context= context; 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     String action = intent.getAction(); 


     if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) { 

      // Check to see if Wi-Fi is enabled and notify appropriate activity 
      int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1); 
      if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) { 

       Toast.makeText(context, "Wi-Fi Direct is enable", Toast.LENGTH_LONG).show(); 
       System.out.print("ddddddddddddddd"); 

      } else { 
       System.out.print("ddddvvvvvvvdddd"); 
       Toast.makeText(context, "Wi-Fi Direct is not enable", Toast.LENGTH_LONG).show(); 
      }  

     } else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) { 
      // Call WifiP2pManager.requestPeers() to get a list of current peers 
     } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) { 
      // Respond to new connection or disconnections 
     } else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) { 
      // Respond to this device's wifi state changing 
     } 
    } 
} 

我'初学者在使用此API,和我想知道如何测试是否启用Wi-Fi或没有。(我应该在我的活动做,看看是否能工程或没有),感谢广泛。

回答

0

可以检查无线网络连接上或不通过该方法

WifiManager的WiFi =(WifiManager)getSystemService(Context.WIFI_SERVICE);

如果(wifi.isWifiEnabled()){

//无线网络启用

}

并且不要忘了有权限

使用许可权的android:NAME =“机器人.permission.ACCESS_WIFI_STATE”

0

你的代码是不完整的。因此,选择是请按照下列步骤来使自己的完整代码:

  1. Android SDK中经理
  2. 下载样本的Android 4.2.2(API 17)(如果已经安装)
  3. 转到C:\ Android的SDK-WINDOWS \ Android的SDK-WINDOWS \ \样品的android-17 \ WiFiDirectDemo或者您的SDK 位于

现在,复制所有文件一个让您的演示一个在日食。 ,因为它不包含project.properties您不能直接导入此代码,因为这不是功能代码。

所有最好的新手....