在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → android wifi之间数据传输、创建热点 示例源码

android wifi之间数据传输、创建热点 示例源码

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:21.85M
  • 下载次数:30
  • 浏览次数:212
  • 发布时间:2017-10-12
  • 实例类别:Android平台开发
  • 发 布 人:xtich
  • 文件格式:.zip
  • 所需积分:2
 相关标签: wifi 热点 demo

实例介绍

【实例简介】

wifi基本功能

【实例截图】

from clipboard


from clipboard



【核心代码】


package com.ethanco.wifitransmit;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.DhcpInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;


public class QuickTransferActivity extends Activity implements DisplayMesage, ITransferResult {
    /**
     * Called when the activity is first created.
     */
    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);

        /**
         * 打开的步骤见 http://blog.csdn.net/hudashi/article/details/25283087
         */
        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();
        }
    }
}



标签: wifi 热点 demo

实例下载地址

android wifi之间数据传输、创建热点 示例源码

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

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

网友评论

发表评论

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

查看所有0条评论>>

小贴士

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

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

关于好例子网

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

;
报警