Android手机与特定传感器节点连接

QucikTransferActivity:
package edu.cdut.robin;

public class QuickTransferActivity extends Activity implements DisplayMesage, ITransferResult {
/* Called when the activity is first created. /
//当程序开始时调用这个java文件
TextView content;
Button mBtn3, mBtn4;
WifiAdmin mWifiAdmin;
WifiApAdmin wifiAp;
Context context;
final static String TAG = “robin”;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    content = (TextView) this.findViewById(R.id.content);
    mBtn3 = (Button) findViewById(R.id.button3);
    mBtn4 = (Button) findViewById(R.id.button4);
    mBtn3.setText("点击连接Wifi");
    mBtn4.setText("点击创建Wifi热点");
    context = this;
    mBtn3.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            mWifiAdmin = new WifiAdmin(context) {

                @Override
                public void myUnregisterReceiver(BroadcastReceiver receiver) {
                    // TODO Auto-generated method stub
                    unregisterReceiver(receiver);
                }

                @Override
                public Intent myRegisterReceiver(BroadcastReceiver receiver, IntentFilter filter) {
                    // TODO Auto-generated method stub
                    registerReceiver(receiver, filter);
                    return null;
                }

                @Override
                public void onNotifyWifiConnected() {
                    // TODO Auto-generated method stub
                    Log.v(TAG, "have connected success!");
                    Log.v(TAG, "###############################");
                }

                @Override
                public void onNotifyWifiConnectFailed() {
                    // TODO Auto-generated method stub
                    Log.v(TAG, "have connected failed!");
                    Log.v(TAG, "###############################");
                }

            };
            mWifiAdmin.openWifi();
            mWifiAdmin.addNetwork(mWifiAdmin.createWifiInfo(Constant.HOST_SPOT_SSID, Constant.HOST_SPOT_PASS_WORD,
                    WifiAdmin.TYPE_WPA));

        }
    });

    mBtn4.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            wifiAp = new WifiApAdmin(context);
            wifiAp.startWifiAp(Constant.HOST_SPOT_SSID, Constant.HOST_SPOT_PASS_WORD);
        }
    });
}

public void onClick(View view) {
    if (view.getId() == R.id.button1) {
        WifiManager wifiManage = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        DhcpInfo info = wifiManage.getDhcpInfo();
        WifiInfo wifiinfo = wifiManage.getConnectionInfo();
        String ip = intToIp(wifiinfo.getIpAddress());
        String serverAddress = intToIp(info.serverAddress);
        new Sender(serverAddress, this, this).start();
        Log.w("robin", "ip:" + ip + "serverAddress:" + serverAddress + info);
    } else if (view.getId() == R.id.button2) {
        Receiver service = new Receiver(this, this);
        service.start();

    }
}

Handler handler = new Handler();
StringBuffer strBuffer = new StringBuffer();

public void displayMesage(final String msg) {
    Runnable r = new Runnable() {

        public void run() {
            // TODO Auto-generated method stub
            if (strBuffer.length() > 1024) {
                strBuffer.delete(0, 100);
            }
            strBuffer.append(msg + "\n");
            content.setText(strBuffer.toString());
            content.invalidate();
        }
    };
    handler.post(r);
}

// 将获取的int转为真正的ip地址,参考的网上的,修改了下

private String intToIp(int i) {
    return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + ((i >> 24) & 0xFF);
}

@Override
public void appendMesage(String msg) {
    displayMesage(msg);

}

@Override
public void onResult(int result, long size) {
    if (wifiAp != null) {
        wifiAp.closeWifiAp(context);
    }
    // TODO Auto-generated method stub
    closeWifi();
    Runnable r = new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            displayMesage("try to open wifi");
            openWifi();
            displayMesage("open wifi end");
        }

    };
    handler.postDelayed(r, 30 * 1000);

}

WifiManager mWifiManager;

// 打开WIFI
public void openWifi() {
if(mWifiAdmin!=null){
mWifiAdmin.openWifi();
return;
}
if (mWifiManager == null) {
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
}
if (!mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(true);
}
}

// 关闭WIFI
public void closeWifi() {
if(mWifiAdmin!=null){
mWifiAdmin.closeWifi();
return;
}
if (mWifiManager == null) {
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
}
if (mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(false);
}
}
}

interface DisplayMesage {
void displayMesage(String msg);

void appendMesage(String msg);

}

interface ITransferResult {
void onResult(int result, long size);
}

class Receiver extends Thread {
private static BufferedReader in;
DisplayMesage console;
ITransferResult transferResult;

Receiver(DisplayMesage console, ITransferResult transferResult) {
    super();
    this.console = console;
    this.transferResult = transferResult;

}

public void run() {
    try {
        ServerSocket socketService = new ServerSocket(3358);
        Log.i("robin", "waiting a connection from the client" + socketService);
        Socket sock = socketService.accept();
        String hostAddress = sock.getLocalAddress().getHostAddress();
        String inetAddress = sock.getInetAddress().getHostAddress();

        Log.w("robin", "local:" + hostAddress + "| inetAddress" + inetAddress + "|" + sock.getRemoteSocketAddress());
        Log.w("robin", "local name:" + sock.getLocalAddress().getHostName() + "| inetAddress"
                + sock.getInetAddress().getHostName() + "|" + InetAddress.getLocalHost().getHostAddress());
        in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
        String line;
        boolean flag = true;
        long count = 0;
        long time = System.currentTimeMillis();
        do {
            line = in.readLine();
            if (flag) {
                console.displayMesage("Recevie:" + line);
                flag = false;
            }
            count = count + line.length();
            if (count % 1024 == 0) {
                console.displayMesage("Recevied:" + ((count << 1) >> 10) + "kB data");
            }
        } while (!Constant.END.equals(line));
        Log.w("robin", "you input is :" + line);
        long t = System.currentTimeMillis() - time;
        if (t == 0)
            t = 1;
        count = count << 1;
        long rate = ((count / t) * 1000) / 1024;
        count = count >> 10;
        console.displayMesage("Recevied:" + count + "kB data" + " in " + t + " ms" + " at rate:" + rate
                + " kB/second");
        Log.i("robin", "exit the app");
        sock.close();
        socketService.close();
        transferResult.onResult(1, count);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

class Sender extends Thread {
DisplayMesage console;
String serverIp;
ITransferResult transferResult;

Sender(String serverAddress, DisplayMesage console, ITransferResult transferResult) {
    super();
    serverIp = serverAddress;
    this.console = console;
    this.transferResult = transferResult;
}

public void run() {
    Socket sock = null;
    PrintWriter out;
    try {

        // 声明sock,其中参数为服务端的IP地址与自定义端口
        sock = new Socket(serverIp, 3358);
        Log.w("robin", "I am try to writer" + sock);
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    char data[] = new char[1024 * 10];
    for (int i = 0; i < data.length; i++) {
        data[i] = (char) i;
    }
    try {
        if (sock != null) {
            // 声明输出流out,向服务端输出“Output Message!!”
            final String msg = "Hello,this is robin!!";
            Log.w("robin", "try to writer");
            out = new PrintWriter(sock.getOutputStream(), true);
            StringBuffer strBuffer = new StringBuffer();
            strBuffer.append(msg);
            String str = msg;
            for (int i = 0; i < 1024; i++) {
                if (i != 0) {
                    str = msg + System.currentTimeMillis() + "|";
                    out.write(data);
                }

                out.println(str);
                Log.w("robin", str);
                if (i == 0) {
                    console.displayMesage("send message....");
                } else if (i % 100 == 0) {
                    console.displayMesage("send message " + i + " success!");
                }
                if (strBuffer.length() > 1024) {
                    strBuffer.delete(0, strBuffer.length());
                }
            }
            out.println(Constant.END);
            out.flush();
        }
        transferResult.onResult(1, 1);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try {
        if (sock != null) {
            sock.close();
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

}

WifiAdmin:
package edu.cdut.robin;

import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;
import android.util.Log;

public abstract class WifiAdmin {

private static final String TAG = "WifiAdmin";
private WifiManager mWifiManager;
//描述任意WiFi连接中活动的,或者是在进程中正在被创建的WiFi链接,函数好多是获取各种信息
private WifiInfo mWifiInfo;
//ScanResult用来描述检测到接入点的信息(直译为扫描结果)
// 扫描出的网络连接列表
private List<ScanResult> mWifiList;
//WiFiConfiguration一个代表配置的无线网络的类,包括安全配置,android最初不是必须支持这个功能
//里面大多数也是一些奇怪的字段
private List<WifiConfiguration> mWifiConfiguration;

private WifiLock mWifiLock;

private String mPasswd = "";
private String mSSID = "";

private Context mContext = null;

public WifiAdmin(Context context) {

    mContext = context;

    // 取得WifiManager对象
    mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    // 取得WifiInfo对象
    mWifiInfo = mWifiManager.getConnectionInfo();

    Log.v(TAG, "getIpAddress = " + mWifiInfo.getIpAddress());
}

// 打开WIFI
public void openWifi() {
    if (!mWifiManager.isWifiEnabled()) {
        mWifiManager.setWifiEnabled(true);
    }
}

// 关闭WIFI
public void closeWifi() {
    if (mWifiManager.isWifiEnabled()) {
        mWifiManager.setWifiEnabled(false);
    }
}

public abstract Intent myRegisterReceiver(BroadcastReceiver receiver, IntentFilter filter);

public abstract void myUnregisterReceiver(BroadcastReceiver receiver);

public abstract void onNotifyWifiConnected();

public abstract void onNotifyWifiConnectFailed();

// 添加一个网络并连接
public void addNetwork(WifiConfiguration wcg) {

    register();

    WifiApAdmin.closeWifiAp(mContext);

    int wcgID = mWifiManager.addNetwork(wcg);
    boolean b = mWifiManager.enableNetwork(wcgID, true);
}

public static final int TYPE_NO_PASSWD = 0x11;
public static final int TYPE_WEP = 0x12;
public static final int TYPE_WPA = 0x13;

public void addNetwork(String ssid, String passwd, int type) {
    if (ssid == null || passwd == null || ssid.equals("")) {
        Log.e(TAG, "addNetwork() ## nullpointer error!");
        return;
    }

    if (type != TYPE_NO_PASSWD && type != TYPE_WEP && type != TYPE_WPA) {
        Log.e(TAG, "addNetwork() ## unknown type = " + type);
    }

    stopTimer();
    unRegister();

    addNetwork(createWifiInfo(ssid, passwd, type));
}

//获取广播信息
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        if (intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION)) {
            Log.d(TAG, "RSSI changed");

            //有可能是正在获取,或者已经获取了
            Log.d(TAG, " intent is " + WifiManager.RSSI_CHANGED_ACTION);

            if (isWifiContected(mContext) == WIFI_CONNECTED) {
                stopTimer();
                onNotifyWifiConnected();
                unRegister();
            } else if (isWifiContected(mContext) == WIFI_CONNECT_FAILED) {
                stopTimer();
                closeWifi();
                onNotifyWifiConnectFailed();
                unRegister();
            } else if (isWifiContected(mContext) == WIFI_CONNECTING) {

            }
        }
    }
};

private final int STATE_REGISTRING = 0x01;
private final int STATE_REGISTERED = 0x02;
private final int STATE_UNREGISTERING = 0x03;
private final int STATE_UNREGISTERED = 0x04;

private int mHaveRegister = STATE_UNREGISTERED;
private synchronized void register() {
    Log.v(TAG, "register() ##mHaveRegister = " + mHaveRegister);

    if (mHaveRegister == STATE_REGISTRING 
            || mHaveRegister == STATE_REGISTERED) {
        return ;
    }

    mHaveRegister = STATE_REGISTRING;
    myRegisterReceiver(mBroadcastReceiver, new IntentFilter(WifiManager.RSSI_CHANGED_ACTION));
    mHaveRegister = STATE_REGISTERED;

    startTimer();
}

private synchronized void unRegister() {
    Log.v(TAG, "unRegister() ##mHaveRegister = " + mHaveRegister);

    if (mHaveRegister == STATE_UNREGISTERED 
            || mHaveRegister == STATE_UNREGISTERING) {
        return ;
    }

    mHaveRegister = STATE_UNREGISTERING;
    myUnregisterReceiver(mBroadcastReceiver);
    mHaveRegister = STATE_UNREGISTERED;
}

private Timer mTimer = null;
private void startTimer() {
    if (mTimer != null) {
        stopTimer();
    }

    mTimer = new Timer(true);

// mTimer.schedule(mTimerTask, 0, 20 * 1000);// 20s
mTimer.schedule(mTimerTask, 30 * 1000);
}

private TimerTask mTimerTask = new TimerTask() {

    @Override
    public void run() {
        // TODO Auto-generated method stub
        Log.e(TAG, "timer out!");
        onNotifyWifiConnectFailed();
        unRegister();
    }
};

private void stopTimer() {
    if (mTimer != null) {
        mTimer.cancel();
        mTimer = null;
    }
}

@Override
protected void finalize() {
    try {
        super.finalize();
        unRegister();
    } catch (Throwable e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public WifiConfiguration createWifiInfo(String SSID, String password, int type) {

    Log.v(TAG, "SSID = " + SSID + "## Password = " + password + "## Type = " + type);

    WifiConfiguration config = new WifiConfiguration();
    config.allowedAuthAlgorithms.clear();
    config.allowedGroupCiphers.clear();
    config.allowedKeyManagement.clear();
    config.allowedPairwiseCiphers.clear();
    config.allowedProtocols.clear();
    config.SSID = "\"" + SSID + "\"";

    WifiConfiguration tempConfig = this.IsExsits(SSID);
    if (tempConfig != null) {
        mWifiManager.removeNetwork(tempConfig.networkId);
    }

    // 分为三种情况:1没有密码2用wep加密3用wpa加密
    if (type == TYPE_NO_PASSWD) {// WIFICIPHER_NOPASS
        config.wepKeys[0] = "";
        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
        config.wepTxKeyIndex = 0;

    } else if (type == TYPE_WEP) {  //  WIFICIPHER_WEP 
        config.hiddenSSID = true;
        config.wepKeys[0] = "\"" + password + "\"";
        config.allowedAuthAlgorithms
                .set(WifiConfiguration.AuthAlgorithm.SHARED);
        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
        config.allowedGroupCiphers
                .set(WifiConfiguration.GroupCipher.WEP104);
        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
        config.wepTxKeyIndex = 0;
    } else if (type == TYPE_WPA) {   // WIFICIPHER_WPA
        config.preSharedKey = "\"" + password + "\"";
        config.hiddenSSID = true;
        config.allowedAuthAlgorithms
                .set(WifiConfiguration.AuthAlgorithm.OPEN);
        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
        config.allowedPairwiseCiphers
                .set(WifiConfiguration.PairwiseCipher.TKIP);
        // config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
        config.allowedPairwiseCiphers
                .set(WifiConfiguration.PairwiseCipher.CCMP);
        config.status = WifiConfiguration.Status.ENABLED;
    } 

    return config;
}

public static final int WIFI_CONNECTED = 0x01;
public static final int WIFI_CONNECT_FAILED = 0x02;
public static final int WIFI_CONNECTING = 0x03;
/**
 * 判断wifi是否连接成功,不是network
 * 
 * @param context
 * @return
 */
public int isWifiContected(Context context) {
    ConnectivityManager connectivityManager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo wifiNetworkInfo = connectivityManager
            .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    Log.v(TAG, "isConnectedOrConnecting = " + wifiNetworkInfo.isConnectedOrConnecting());
    Log.d(TAG, "wifiNetworkInfo.getDetailedState() = " + wifiNetworkInfo.getDetailedState());
    if (wifiNetworkInfo.getDetailedState() == DetailedState.OBTAINING_IPADDR
            || wifiNetworkInfo.getDetailedState() == DetailedState.CONNECTING) {
        return WIFI_CONNECTING;
    } else if (wifiNetworkInfo.getDetailedState() == DetailedState.CONNECTED) {
        return WIFI_CONNECTED;
    } else {
        Log.d(TAG, "getDetailedState() == " + wifiNetworkInfo.getDetailedState());
        return WIFI_CONNECT_FAILED;
    }
}

private WifiConfiguration IsExsits(String SSID) {
    List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();
    for (WifiConfiguration existingConfig : existingConfigs) {
        if (existingConfig.SSID.equals("\"" + SSID + "\"") /*&& existingConfig.preSharedKey.equals("\"" + password + "\"")*/) {
            return existingConfig;
        }
    }
    return null;
}


// 断开指定ID的网络
public void disconnectWifi(int netId) {
    mWifiManager.disableNetwork(netId);
    mWifiManager.disconnect();
}

// 检查当前WIFI状态
public int checkState() {
    return mWifiManager.getWifiState();
}

// 锁定WifiLock
public void acquireWifiLock() {
    mWifiLock.acquire();
}

// 解锁WifiLock
public void releaseWifiLock() {
    // 判断时候锁定
    if (mWifiLock.isHeld()) {
        mWifiLock.acquire();
    }
}

// 创建一个WifiLock
public void creatWifiLock() {
    mWifiLock = mWifiManager.createWifiLock("Test");
}

// 得到配置好的网络
public List<WifiConfiguration> getConfiguration() {
    return mWifiConfiguration;
}

// 指定配置好的网络进行连接
public void connectConfiguration(int index) {
    // 索引大于配置好的网络索引返回
    if (index > mWifiConfiguration.size()) {
        return;
    }
    // 连接配置好的指定ID的网络
    mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
            true);
}

public void startScan() {
    mWifiManager.startScan();
    mWifiList = mWifiManager.getScanResults();
    mWifiConfiguration = mWifiManager.getConfiguredNetworks();
}

// 得到网络列表
public List<ScanResult> getWifiList() {
    return mWifiList;
}

// 查看扫描结果
public StringBuilder lookUpScan() {
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i < mWifiList.size(); i++) {
        stringBuilder
                .append("Index_" + new Integer(i + 1).toString() + ":");
        // 将ScanResult信息转换成一个字符串包
        // 其中把包括:BSSID、SSID、capabilities、frequency、level
        stringBuilder.append((mWifiList.get(i)).toString());
        stringBuilder.append("/n");
    }
    return stringBuilder;
}

// 得到MAC地址
public String getMacAddress() {
    return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
}

// 得到接入点的BSSID
public String getBSSID() {
    return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
}

// 得到IP地址
public int getIPAddress() {
    return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
}

// 得到连接的ID
public int getNetworkId() {
    return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
}

// 得到WifiInfo的所有信息包
public String getWifiInfo() {
    return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
}

}

WifiApAdimin:
package edu.cdut.robin;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Timer;
import java.util.TimerTask;

import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.util.Log;

/**
* 创建热点
*
*/
public class WifiApAdmin {
public static final String TAG = “WifiApAdmin”;

public static void closeWifiAp(Context context) {
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
    closeWifiAp(wifiManager);
}

private WifiManager mWifiManager = null;

private Context mContext = null;
public WifiApAdmin(Context context) {
    mContext = context;

    mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);  

    closeWifiAp(mWifiManager);
}

private String mSSID = "";
private String mPasswd = "";
public void startWifiAp(String ssid, String passwd) {
    mSSID = ssid;
    mPasswd = passwd;

    if (mWifiManager.isWifiEnabled()) {
        mWifiManager.setWifiEnabled(false);
    } 

    stratWifiAp();

    MyTimerCheck timerCheck = new MyTimerCheck() {

        @Override
        public void doTimerCheckWork() {
            // TODO Auto-generated method stub

            if (isWifiApEnabled(mWifiManager)) {
                Log.v(TAG, "Wifi enabled success!");
                this.exit();
            } else {
                Log.v(TAG, "Wifi enabled failed!");
            }
        }

        @Override
        public void doTimeOutWork() {
            // TODO Auto-generated method stub
            this.exit();
        }
    };
    timerCheck.start(15, 1000);

}

public void stratWifiAp() {
    Method method1 = null;
    try {
        method1 = mWifiManager.getClass().getMethod("setWifiApEnabled",
                WifiConfiguration.class, boolean.class);
        WifiConfiguration netConfig = new WifiConfiguration();

        netConfig.SSID = mSSID;
        netConfig.preSharedKey = mPasswd;

        netConfig.allowedAuthAlgorithms
                .set(WifiConfiguration.AuthAlgorithm.OPEN);
        netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
        netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
        netConfig.allowedKeyManagement
                .set(WifiConfiguration.KeyMgmt.WPA_PSK);
        netConfig.allowedPairwiseCiphers
                .set(WifiConfiguration.PairwiseCipher.CCMP);
        netConfig.allowedPairwiseCiphers
                .set(WifiConfiguration.PairwiseCipher.TKIP);
        netConfig.allowedGroupCiphers
                .set(WifiConfiguration.GroupCipher.CCMP);
        netConfig.allowedGroupCiphers
                .set(WifiConfiguration.GroupCipher.TKIP);

        method1.invoke(mWifiManager, netConfig, true);

    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (NoSuchMethodException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

private static void closeWifiAp(WifiManager wifiManager) {
    if (isWifiApEnabled(wifiManager)) {
        try {
            Method method = wifiManager.getClass().getMethod("getWifiApConfiguration");
            method.setAccessible(true);

            WifiConfiguration config = (WifiConfiguration) method.invoke(wifiManager);

            Method method2 = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
            method2.invoke(wifiManager, config, false);
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

private static boolean isWifiApEnabled(WifiManager wifiManager) {
    try {
        Method method = wifiManager.getClass().getMethod("isWifiApEnabled");
        method.setAccessible(true);
        return (Boolean) method.invoke(wifiManager);

    } catch (NoSuchMethodException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

    return false;
}

}

Constant:
package edu.cdut.robin;
/**
* 此类为一个常量值类
* */
public class Constant {
public final static String END=”end”;
//热点的名称
public final static String HOST_SPOT_SSID=”HotSpotRobin”;
//WiFi热点的密码
public final static String HOST_SPOT_PASS_WORD=”123456789”;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值