在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → 通过WifiAp实现 手机间的数据传输

通过WifiAp实现 手机间的数据传输

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:1.59M
  • 下载次数:27
  • 浏览次数:747
  • 发布时间:2015-08-04
  • 实例类别:Android平台开发
  • 发 布 人:crazycode
  • 文件格式:.7z
  • 所需积分:2
 相关标签: wifi 手机

实例介绍

【实例简介】

 在上传工程之前,对源代码中几个重要的类简单解释一下:

  Client端

  WifiApClientManager:对WifiManager的接口进行了封装,以便于进行开启、连接等操作

  HttpEngineLite:发起Http请求的"引擎"类

  WifiApClientRequest:请求抽象类,子类WifiApClientGetRecvListRequest,WifiApClientGetFileRequest分别表示获取获取Server端待传文件列表请求及获取Server端指定文件请求,使用HttpEngineLite执行具体操作

  NanoHTTPClient:提供获取Server端待传文件列表,获取Server端指定文件等操作接口,使用线程池管理WifiApClientRequest

 

  Server端

  WifiApServerManager:对WifiManager的接口进行了封装,以便于进行开启AP,配置AP等操作

  WifiApServerUtil:定义了Android AP通用网关IP

  NanoHTTPD:此类为引用的开源代码(A simple, tiny, nicely embeddable HTTP server in Java)

  NanoHTTPServer:NanoHTTPD的子类,实现其接口,返回相应的HttpResponse

【实例截图】

【核心代码】


package pym.test.server;

import java.lang.reflect.Method;

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

/**
 * 
 * @author pengyiming
 * @description Wifi服务端Ap管理者,实质上是WifiManager的代理
 * 
 */
public class WifiApServerManager
{
    /* 数据段begin */
    private final static String TAG = "WifiApServerManager";
    // 单例
    private static WifiApServerManager mWifiApServerManager;
    // WifiManager引用
    private WifiManager mWifiManager;

    // Wifi AP广播action(本应该用反射获取,但为了减少不必要的代码,在这里定义,并与源码保持一致)
    public static final String WIFI_AP_STATE_CHANGED_ACTION = "android.net.wifi.WIFI_AP_STATE_CHANGED";
    public static final String EXTRA_WIFI_AP_STATE = "wifi_state";

    // 认证加密类型
    public enum AuthenticationType
    {
        TYPE_NONE, TYPE_WPA, TYPE_WPA2
    }

    /* 数据段end */

    /* 函数段begin */
    private WifiApServerManager(WifiManager wifiManager)
    {
        mWifiManager = wifiManager;
    }

    public synchronized static WifiApServerManager getInstance(WifiManager wifiManager)
    {
        if (mWifiApServerManager == null)
        {
            mWifiApServerManager = new WifiApServerManager(wifiManager);
        }

        return mWifiApServerManager;
    }

    public WifiConfiguration getWifiApConfiguration()
    {
        WifiConfiguration config = null;
        try
        {
            Method method = mWifiManager.getClass().getMethod("getWifiApConfiguration");
            config = (WifiConfiguration) method.invoke(mWifiManager, (Object[]) null);
        }
        catch (Exception e)
        {
            Log.e(TAG, "", e);
        }

        return config;
    }

    public boolean setWifiApConfiguration(WifiConfiguration config)
    {
        boolean ret = false;
        try
        {
            Method method = mWifiManager.getClass().getMethod("setWifiApConfiguration", WifiConfiguration.class);
            ret = (Boolean) method.invoke(mWifiManager, config);
        }
        catch (Exception e)
        {
            Log.e(TAG, "", e);
        }

        return ret;
    }

    public boolean isWifiApEnabled()
    {
        boolean ret = false;
        try
        {
            Method method = mWifiManager.getClass().getMethod("isWifiApEnabled");
            ret = (Boolean) method.invoke(mWifiManager, (Object[]) null);
        }
        catch (Exception e)
        {
            Log.e(TAG, "", e);
        }

        return ret;
    }

    public boolean setWifiApEnabled(WifiConfiguration config, boolean enabled)
    {
        boolean ret = false;
        try
        {
            Method method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);
            ret = (Boolean) method.invoke(mWifiManager, config, enabled);
        }
        catch (Exception e)
        {
            Log.e(TAG, "", e);
        }

        return ret;
    }

    public WifiConfiguration generateWifiConfiguration(AuthenticationType type, String ssid, String MAC, String password)
    {
        WifiConfiguration config = new WifiConfiguration();
        config.SSID = ssid;
        config.BSSID = MAC;
        Log.d(TAG, "MAC = "   config.BSSID);
        switch (type)
        {
            case TYPE_NONE:
            {
                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

                break;
            }
            case TYPE_WPA:
            {
                config.preSharedKey = password;

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

                break;
            }
            case TYPE_WPA2:
            {
                config.preSharedKey = password;

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

                break;
            }
            default:
            {
                break;
            }
        }

        return config;
    }
    /* 函数段end */
}


标签: wifi 手机

实例下载地址

通过WifiAp实现 手机间的数据传输

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警