Android开发通过wifi阿里云怎么上传数据库到云

基于Android的WiFi文件传输系统的设计与实现_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于Android的WiFi文件传输系统的设计与实现
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩54页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢博客访问: 1181913
博文数量: 121
博客积分: 3526
博客等级: 中校
技术积分: 1825
注册时间:
认证徽章:
记录总结自己的工作
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Android平台
&&&&& & 控制数据链接的开关首先要申请权限:
&&&&& & 由于安卓没有提供公开的api进行操作,所以要使用反射才可以完成:
private void setMobileDataEnabled(Context context, boolean enabled) {
&&&&&&&&final ConnectivityManager conman = (ConnectivityManager) context
&&&&&&&&&&&&&&&&.getSystemService(Context.CONNECTIVITY_SERVICE);
&&&&&&&&Class conmanClass;
&&&&&&&&try {
&&&&&&&&&&&&conmanClass = Class.forName(conman.getClass().getName());
&&&&&&&&&&&&final Field iConnectivityManagerField = conmanClass
&&&&&&&&&&&&&&&&&&&&.getDeclaredField("mService");
&&&&&&&&&&&&iConnectivityManagerField.setAccessible(true);
&&&&&&&&&&&&final Object iConnectivityManager = iConnectivityManagerField
&&&&&&&&&&&&&&&&&&&&.get(conman);
&&&&&&&&&&&&final Class iConnectivityManagerClass = Class
&&&&&&&&&&&&&&&&&&&&.forName(iConnectivityManager.getClass().getName());
&&&&&&&&&&&&final Method setMobileDataEnabledMethod = iConnectivityManagerClass
&&&&&&&&&&&&&&&&&&&&.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
&&&&&&&&&&&&setMobileDataEnabledMethod.setAccessible(true);
&&&&&&&&&&&&setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
&&&&&&&&} catch (ClassNotFoundException e) {
&&&&&&&&&&&&Logger.e(TAG, e);
&&&&&&&&} catch (SecurityException e) {
&&&&&&&&&&&&Logger.e(TAG, e);
&&&&&&&&} catch (NoSuchFieldException e) {
&&&&&&&&&&&&Logger.e(TAG, e);
&&&&&&&&} catch (IllegalArgumentException e) {
&&&&&&&&&&&&Logger.e(TAG, e);
&&&&&&&&} catch (IllegalAccessException e) {
&&&&&&&&&&&&Logger.e(TAG, e);
&&&&&&&&} catch (NoSuchMethodException e) {
&&&&&&&&&&&&Logger.e(TAG, e);
&&&&&&&&} catch (InvocationTargetException e) {
&&&&&&&&&&&&Logger.e(TAG, e);
&&&&&&&&控制wifi则需要申请权限:
&&&&& & 然后调用如下方法:
public void setWifi(boolean isEnable) {
&&&&&&&&if (mWm == null) {
&&&&&&&&&&&&mWm = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
&&&&&&&&if (isEnable) {
&&&&&&&&&&&&if (!mWm.isWifiEnabled()) {
&&&&&&&&&&&&&&&&mWm.setWifiEnabled(true);
&&&&&&&&&&&&}
&&&&&&&&} else {
&&&&&&&&&&&&if (mWm.isWifiEnabled()) {
&&&&&&&&&&&&&&&&mWm.setWifiEnabled(false);
&&&&&&&&&&&&}
阅读(1583) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。本文参照自:
以下是源码文件
原文件Constant.java
package edu.cdut.
public class Constant {
public final static String END=&end&;
public final static String HOST_SPOT_SSID=&HotSpotRobin&;
public final static String HOST_SPOT_PASS_WORD=&&;
&源码文件1
QuickTransferActivity.java文件
package edu.cdut.robin;
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;
import edu.cdut.robin.hotspot.WifiAdmin;import edu.cdut.robin.hotspot.WifiApAdmin;
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;
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);& & & & 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);& & & & & & & & & & & && & & & & & & & & & }
& & & & & & & & & & @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();& & & & & && & & & }& & & & 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();& & & & & && & & & }& & & & 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. i++) {& & & & & & data[i] = (char)& & & & }& & & & 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 =& & & & & & & & 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();& & & & }& & }}
本文已收录于以下专栏:
相关文章推荐
本文参照自: Android
连接Wifi和创建Wifi热点 demo
在Android手机上可以通过在收方开启一个wifi热点,然后再发送方连接这个wifi热点。这样他们就在一个局域网,然...
上文接Android手机通过wifi进行数据传输(二)
MyTimerCheck.java
package edu.cdut.robin.
wifi,tcp通信数据发送接收客户端服务器安卓源码
大家好我是Miko,最近有参加一个比赛,用到了WifiDirect技术,于是翻看官方文档之后,想写一个Demo,Google API Sample已经很老了,还是用的Eclipse,宝宝心好累=_=+...
通过网络使用Socket来实现通信。
蓝牙2.0 和 蓝牙4.0BLE
1、首先扫描到蓝牙
2、通过UUID来配对蓝牙
1)、安全模式是 ...
最近把测试丢过来的种种BUG解决后,终于有时间去研究研究Socket通信,再加上以前做的WiFi连接和热点开启,于是有了现在的这篇博文:创建热点发送文件,让另一台手机连接热点接收文件。
两台设备是如...
他的最新文章
讲师:李江龙
讲师:司徒正美
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)android WIFI Socket 文件传输
我的这个Socket是想保持一个长连接,文件可以循环传输 但是我的问题在于,不能抓住文件传输完成的这个时机,导致异常。
我的文件发送代码
public void sendFile(String filePath)
File file = new File(filePath);
//发送文件
this.fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[this.bufferSize];
int total = 0;
_Log.e(_Log.msg() + &我们正在发送文件先生,&);
while (true)
int length = this.fileInputStream.read(buffer);
this.outputStream.write(buffer);
this.outputStream.flush();
if (length == -1)
_Log.e(_Log.msg() + &这就是当-1的时候我们读文件结束了&);
_Log.e(_Log.msg() + &我们按传输所计算的文件大小为:& + total + &bit&);
catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
_Log.e(_Log.msg() + &文件发送结束我们应该等待客户端的确认,然后关闭等待对话框&);
vcHJlPg0KPHA+ztK1xM7EvP6908rVtPrC6zwvcD4NCjxwcmUgY2xhc3M9"brush: light: title: ; toolbar: notranslate" title="\">
//region 正在接受文件
this.fileOutputStream = new FileOutputStream(this.receiveFilePath);
boolean first =
_Log.e(_Log.msg() + &文件正在被接受&);
while (true)
if (!first)
_Log.e(_Log.msg() + &正在等待接收吓一跳&);
total = this.inputStream.read(buffer);
_Log.e(_Log.msg() + &接收到的数组长度为+& + total);
if (new File(this.receiveFilePath).length() &= this.receiveFileSize)
_Log.e(_Log.msg() + &读取文件时因为到末尾时返回-1而结束的 = & + this
.receiveFileSize);
//我们暂且认为这里FileOutputStream(path)会自动创建这个不存在的路径,如果
this.fileOutputStream.write(buffer, 0, total);
this.fileOutputStream.close();
_Log.e(_Log.msg() + &传输完成了&);
//endregion传输文件完成
this.receiveFileState =
_Log.e(_Log.msg() + &我们在1秒钟之后告知客户我们已经接受文件完成的这件事&);
Thread.sleep(1000);
this.sendString(this.transferFileOver);//发送文件接收完成标志
_Log.e(_Log.msg() + &我们已经说完了,就是不知道其受到没有&);
关键点:(我想在文件传输完成后从这个点跳出但是总不能把握文件什么时候传输完成)
//这个没有成功
if (new File(this.receiveFilePath).length() &= this.receiveFileSize)
_Log.e(_Log.msg() + &读取文件时因为到末尾时返回-1而结束的 = & + this
.receiveFileSize);
//这个也没有成功
this.receiveFileSize -=
if (this.receiveFileSize &= 0)
_Log.e(_Log.msg() + &读取文件时因为到末尾时返回-1而结束的 = & + this
.receiveFileSize);
//还试过让发送方Socket发送完成文件后发送一个字符串命令,
//我让发送文件后,使其sleep(1000),在发送命令,依然会和文件数据 混在一起
没想到的是问题还没有问,不过是写了些思路问题就有了解,真棒
代码如下:
SocketTool.java
package a114.yangming.Work.M_S
import android.os.M
import android.preference.PreferenceM
import android.util.L
import org.json.JSONE
import org.json.JSONO
import org.json.JSONT
import java.io.F
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.FileOutputS
import java.io.IOE
import java.io.InputS
import java.io.OutputS
import java.io.UnsupportedEncodingE
import java.util.L
import a114.yangming.Util.G
import a114.yangming.Util.Tool_GetS
import a114.yangming.Util._L
import a114.yangming.myapplication.R;
杨铭 Created by kys_8 on 16/6/11,0011. &p&Email:&script data-cfhash='f9e31' type="text/javascript"&/*【Android】Android中WIFI开发总结(一)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://smallwoniu./4951
WIFI就是一种无线联网技术,常见的是使用无线路由器。
WIFI就是一种无线联网技术,常见的是使用无线路由器。那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网。如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点”。
在Android中对Wifi操作,android本身提供了一些有用的包,在android.net.wifi包下面,主要包括以下几个类和接口:
1.ScanResult
主要用来描述已经检测出的接入点,包括接入点的地址,接入点的名称,身份认证,频率,信号强度等信息。其实就是通过wifi 硬件的扫描来获取一些周边的wifi 热点的信息。
2.WifiConfiguration
Wifi网络的配置,包括安全设置等,在我们连通一个wifi 接入点的时候,需要获取到的一些信息。主要包含四个属性:
BSS是一种特殊的Ad-hoc LAN(一种支持点对点访问的无线网络应用模式)的应用,一个无线网络至少由一个连接到有线网络的AP和若干无线工作站组成,这种配置称为一个基本服务装置。一群计算机设定相同的 BSS名称,即可自成一个group,而此BSS名称,即所谓BSSID。通常,手机WLAN中,bssid其实就是无线路由的MAC地址。
networkid:网络ID。
PreSharedKey:无线网络的安全认证模式。
SSID:SSID(Service
Set Identif)用于标识无线局域网,SSID不同的无线网络是无法进行互访的。
3.WifiInfo
wifi无线连接的描述,包括(接入点,网络连接状态,隐藏的接入点,IP地址,连接速度,MAC地址,网络ID,信号强度等信息)。这里简单介绍一下WifiManager中常用的方法:
获得SSID(热点名称)
getBSSID()
getDetailedStateOf()
获取客户端的连通性
getHiddenSSID()
获得SSID 是否被隐藏
getIpAddress()
获取IP 地址
getLinkSpeed()
获得连接的速度
getMacAddress()
获得Mac 地址
获得802.11n 网络的信号
4.WifiManager
wifi连接统一管理类,获取WIFI网卡的状态(WIFI网卡的状态是由一系列的整形常量来表示的)
WIFI_STATE_DISABLING = 0
WIFI网卡正在关闭
WIFI_STATE_DISABLED = 1
WIFI网卡不可用
WIFI_STATE_ENABLING = 2
WIFI网正在打开 (WIFI启动需要一段时间)
WIFI_STATE_ENABLED = 3
WIFI网卡可用
WIFI_STATE_UNKNOWN = 4
未知网卡状态
WIFI_AP_STATE_DISABLING = 10
WIFI热点正在关闭
WIFI_AP_STATE_DISABLED = 11
WIFI热点不可用
WIFI_AP_STATE_ENABLING = 12
WIFI热点正在打开
WIFI_AP_STATE_ENABLED = 13
WIFI热点可用
5. 在AndroidManifest.xml进行对WIFI操作的权限设置
以下是使用wifi访问网络所需的权限 --&
&uses-permission
android:name="android.permission.CHANGE_NETWORK_STATE"&&/uses-permission&
&uses-permission
android:name="android.permission.CHANGE_WIFI_STATE"&&/uses-permission&
&uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"&&/uses-permission&
&uses-permission
android:name="android.permission.ACCESS_WIFI_STATE"&&/uses-permission&
下面是汇总的一个wifi管理工具类,我完善了一下,并加上了详细的注解,很实用的!
WifiAdmin类: (wifi管理工具类)
package com.zhf.wifidemo.wifi.
import java.lang.reflect.F
import java.lang.reflect.M
import java.util.I
import java.util.L
import android.content.C
import android.net.wifi.ScanR
import android.net.wifi.WifiC
import android.net.wifi.WifiI
import android.net.wifi.WifiM
WIFI管理类
@author ZHF
public class WifiAdmin
private static
wifiAdmin = null;
private List&WifiConfiguration&
private List&ScanResult&
private WifiInfo
WifiManager.WifiLock
public WifiManager
获取该类的实例(懒汉)
@param context
public static WifiAdmin
getInstance(Context context) {
if(wifiAdmin
= new WifiAdmin(context);
return wifiA
return null;
private WifiAdmin(Context
context) {
this.mWifiManager
= (WifiManager) context.getSystemService("wifi");
this.mWifiInfo
= this.mWifiManager.getConnectionInfo();
是否存在网络信息
@param str
private WifiConfiguration
isExsits(String str) {
localIterator = this.mWifiManager.getConfiguredNetworks().iterator();
WifiConfiguration
localWifiC
if(!localIterator.hasNext()) return null;
localWifiConfiguration
= (WifiConfiguration) localIterator.next();
}while(!localWifiConfiguration.SSID.equals("\"" +
str + "\""));
return localWifiC
/**锁定WifiLock,当下载大文件时需要锁定
public void AcquireWifiLock()
this.mWifilock.acquire();
/**创建一个WifiLock**/
public void CreateWifiLock()
this.mWifilock
= this.mWifiManager.createWifiLock("Test");
/**解锁WifiLock**/
public void ReleaseWifilock()
if(mWifilock.isHeld())
mWifilock.acquire();
/**打开Wifi**/
public void OpenWifi()
if(!this.mWifiManager.isWifiEnabled()){
this.mWifiManager.setWifiEnabled(true);
/**关闭Wifi**/
public void closeWifi()
if(mWifiManager.isWifiEnabled())
mWifiManager.setWifiEnabled(false);
/**端口指定id的wifi**/
public void disconnectWifi(int paramInt)
this.mWifiManager.disableNetwork(paramInt);
/**添加指定网络**/
public void addNetwork(WifiConfiguration
paramWifiConfiguration) {
= mWifiManager.addNetwork(paramWifiConfiguration);
mWifiManager.enableNetwork(i, true);
连接指定配置好的网络
@param index 配置好网络的ID
public void connectConfiguration(int index)
& mWifiConfiguration.size()) {
mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId, true);
根据wifi信息创建或关闭一个热点
@param paramWifiConfiguration
@param paramBoolean 关闭标志
public void createWifiAP(WifiConfiguration
paramWifiConfiguration,boolean paramBoolean)
localClass = this.mWifiManager.getClass();
arrayOfClass = new Class[2];
arrayOfClass[0]
= WifiConfiguration.class;
arrayOfClass[1]
= Boolean.TYPE;
localMethod = localClass.getMethod("setWifiApEnabled",arrayOfClass);
WifiManager
localWifiManager = this.mWifiM
arrayOfObject = new Object[2];
arrayOfObject[0]
= paramWifiC
arrayOfObject[1]
= Boolean.valueOf(paramBoolean);
localMethod.invoke(localWifiManager,
arrayOfObject);
} catch (Exception
e.printStackTrace();
创建一个wifi信息
@param ssid 名称
@param passawrd 密码
@param paramInt 有3个参数,1是无密码,2是简单密码,3是wap加密
@param type 是"ap"还是"wifi"
public WifiConfiguration
createWifiInfo(String ssid, String passawrd,int paramInt,
String type) {
WifiConfiguration
localWifiConfiguration1 = new WifiConfiguration();
localWifiConfiguration1.allowedAuthAlgorithms.clear();
localWifiConfiguration1.allowedGroupCiphers.clear();
localWifiConfiguration1.allowedKeyManagement.clear();
localWifiConfiguration1.allowedPairwiseCiphers.clear();
localWifiConfiguration1.allowedProtocols.clear();
if(type.equals("wt"))
localWifiConfiguration1.SSID
ssid + "\"");
WifiConfiguration
localWifiConfiguration2 = isExsits(ssid);
if(localWifiConfiguration2
mWifiManager.removeNetwork(localWifiConfiguration2.networkId);
if(paramInt
localWifiConfiguration1.wepKeys[0]
localWifiConfiguration1.allowedKeyManagement.set(0);
localWifiConfiguration1.wepTxKeyIndex
} else if(paramInt
localWifiConfiguration1.hiddenSSID
localWifiConfiguration1.wepKeys[0]
passawrd + "\"");
localWifiConfiguration1.preSharedKey
passawrd + "\"");
localWifiConfiguration1.hiddenSSID
localWifiConfiguration1.allowedAuthAlgorithms.set(0);
localWifiConfiguration1.allowedGroupCiphers.set(2);
localWifiConfiguration1.allowedKeyManagement.set(1);
localWifiConfiguration1.allowedPairwiseCiphers.set(1);
localWifiConfiguration1.allowedGroupCiphers.set(3);
localWifiConfiguration1.allowedPairwiseCiphers.set(2);
localWifiConfiguration1.SSID
localWifiConfiguration1.allowedAuthAlgorithms.set(1);
localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
localWifiConfiguration1.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
localWifiConfiguration1.allowedKeyManagement.set(0);
localWifiConfiguration1.wepTxKeyIndex
if (paramInt
localWifiConfiguration1.wepKeys[0]
localWifiConfiguration1.allowedKeyManagement.set(0);
localWifiConfiguration1.wepTxKeyIndex
} else if (paramInt
localWifiConfiguration1.hiddenSSID
localWifiConfiguration1.wepKeys[0]
} else if (paramInt
localWifiConfiguration1.preSharedKey
localWifiConfiguration1.allowedAuthAlgorithms.set(0);
localWifiConfiguration1.allowedProtocols.set(1);
localWifiConfiguration1.allowedProtocols.set(0);
localWifiConfiguration1.allowedKeyManagement.set(1);
localWifiConfiguration1.allowedPairwiseCiphers.set(2);
localWifiConfiguration1.allowedPairwiseCiphers.set(1);
return localWifiConfiguration1;
/**获取热点名**/
public String
getApSSID() {
localMethod = this.mWifiManager.getClass().getDeclaredMethod("getWifiApConfiguration", new Class[0]);
if (localMethod
== null) return null;
localObject1 = localMethod.invoke(this.mWifiManager,new Object[0]);
if (localObject1
== null) return null;
WifiConfiguration
localWifiConfiguration = (WifiConfiguration) localObject1;
if (localWifiConfiguration.SSID
!= null) return localWifiConfiguration.SSID;
localField1 = WifiConfiguration.class .getDeclaredField("mWifiApProfile");
if (localField1
== null) return null;
localField1.setAccessible(true);
localObject2 = localField1.get(localWifiConfiguration);
localField1.setAccessible(false);
if (localObject2
return null;
localField2 = localObject2.getClass().getDeclaredField("SSID");
localField2.setAccessible(true);
localObject3 = localField2.get(localObject2);
if (localObject3
== null) return null;
localField2.setAccessible(false);
str = (String) localObject3;
} catch (Exception
localException) {
return null;
/**获取wifi名**/
public String
getBSSID() {
if (this.mWifiInfo
return "NULL";
return this.mWifiInfo.getBSSID();
/**得到配置好的网络
public List&WifiConfiguration&
getConfiguration() {
return this.mWifiC
/**获取ip地址**/
public int getIPAddress()
return (mWifiInfo
mWifiInfo.getIpAddress();
/**获取物理地址(Mac)**/
public String
getMacAddress() {
return (mWifiInfo
? "NULL" :
mWifiInfo.getMacAddress();
/**获取网络id**/
public int getNetworkId()
return (mWifiInfo
mWifiInfo.getNetworkId();
/**获取热点创建状态**/
public int getWifiApState()
= ((Integer) this.mWifiManager.getClass()
.getMethod("getWifiApState", new Class[0])
.invoke(this.mWifiManager, new Object[0])).intValue();
} catch (Exception
localException) {
/**获取wifi连接信息**/
public WifiInfo
getWifiInfo() {
return this.mWifiManager.getConnectionInfo();
得到网络列表**/
public List&ScanResult&
getWifiList() {
return this.mWifiL
/**查看扫描结果**/
public StringBuilder
lookUpScan() {
StringBuilder
localStringBuilder = new StringBuilder();
for (int i
i & mWifiList.size(); i++)
localStringBuilder.append("Index_"+new Integer(i
+ 1).toString()
localStringBuilder.append((mWifiList.get(i)).toString());
localStringBuilder.append("\n");
return localStringB
设置wifi搜索结果 **/
public void setWifiList()
this.mWifiList
= this.mWifiManager.getScanResults();
/**开始搜索wifi**/
public void startScan()
this.mWifiManager.startScan();
/**得到接入点的BSSID**/
public String
GetBSSID() {
return (mWifiInfo
? "NULL" :
mWifiInfo.getBSSID();
最后,成功连接到wifi后,通过本机IP地址便可以进行相关网络开发,在下一篇中我会讲解一个WIFI热点搜索、创建、连接的Demo(),希望能帮助到大家!
版权声明:本文内容由互联网用户自发贡献,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至: 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
用云栖社区APP,舒服~
【云栖快讯】他,一路保送,但可能不是你想象中的学霸; 他,曾是微软最年轻的技术管理者,挑战带领跨国团队; 他,后来加入阿里,成为阿里西雅图分部的第22名员工;
他,就是阿里通用计算平台负责人关涛! 云栖社区通过短视频,为你揭晓他的成长和开发计算平台的经历,以及他对未来的展望!&&
阿里云移动APP解决方案,助力开发者轻松应对移动app中随时可能出现的用户数量的爆发式增长、复杂的移动安全挑战等...
移动测试(Mobile Testing)是为广大企业客户和移动开发者提供真机测试服务的云平台,拥有大量热门机型,...
大数据开发套件(Data IDE),提供可视化开发界面、离线任务调度运维、快速数据集成、多人协同工作等功能,为您...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
社区之星年度评选,投票可抽奖
Loading...

我要回帖

更多关于 阿里云数据库上传 的文章

 

随机推荐