AndroidWIFI的基本实现
来源:互联网 发布:js将div内容清空 编辑:程序博客网 时间:2024/05/18 12:37
AndroidWIFI需要知道的WIFI状态以及WIFI权限:
WIFI网卡的状态:
1.WIFI_STATE_DISABLED //WIFI网卡不可用
2.WIFI_STATE_DISABLING //WIFI网卡正在关闭
3.WIFI_STATE_ENABLED //WIFI网卡可用
4.WIFI_STATE_ENABLING //WIFI网卡正在打开
5.WIFI_STATE_UNKNOWN //WIFI网卡状态未知
操作WIFI所需权限:
//允许APP发起网络请求
//允许APP改变网络连接状态
//允许APP改变WIFI连接状态
//允许APP获取网络的状态信息
//允许APP获取WIFI的状态信息
整体流程就是:
1.创建页面布局,分别定义打开WIFI,关闭WIFI,获取WIFI状态,获取网络状态,获取数据按钮
2.得到UI控件
3.创建WIFI管理器对象
4.得到系统服务
5.通过Manager.setWifiEnabled(true/false)打开或者关闭WIFI设备
6.通过Manager.getWifiState得到wifi状态(开启或者关闭)
7.使用isNetworkOnline()方法得到的网络状态(自定义方法,具体看代码)
8.创建自定义类CustomTaskextends AsyncTask,通过execute()传入的url值得到该url网络数据(通过onPostExecute监听该类的doInBackground方法得到返回的数据)
代码:
package com.example.adminis.androidwifiapp;import android.app.Activity;import android.content.Context;import android.media.AudioManager;import android.media.SoundPool;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.net.wifi.WifiManager;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;import java.io.IOException;public class MainActivity extends Activity implements View.OnClickListener { private Button btn_startWifi,btn_closeWifi,btn_getWifiStatus,btn_getWorkStatus,btn_getData,btn_SoundPool; private TextView tv_show; private boolean OnClick = true; private WifiManager Manager; //Wifi管理器 private CustomTask customTask; //自定义的类 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //得到UI相应控件,并对按键事件进行接口 tv_show = (TextView) findViewById(R.id.tv_showpage); btn_startWifi = (Button) findViewById(R.id.btn_startWifi); btn_startWifi.setOnClickListener(this); btn_closeWifi = (Button) findViewById(R.id.btn_closeWifi); btn_closeWifi.setOnClickListener(this); btn_getWifiStatus = (Button) findViewById(R.id.btn_getWifiStatus); btn_getWifiStatus.setOnClickListener(this); btn_getWorkStatus = (Button) findViewById(R.id.btn_getWorkStatus); btn_getWorkStatus.setOnClickListener(this); btn_getData = (Button) findViewById(R.id.btn_getData); btn_getData.setOnClickListener(this); } //按键事件的接口 @Override public void onClick(View view) { //得到系统的服务 Manager = (WifiManager) MainActivity.this.getSystemService(Context.WIFI_SERVICE); //通过Toast返回状态信息 String result = ""; switch (view.getId()){ case R.id.btn_startWifi: if(Manager.setWifiEnabled(true)){ result = "启动WIFI成功"; }else { result = "启动WIFI失败"; } break; case R.id.btn_closeWifi: if(Manager.setWifiEnabled(false)){ result = "关闭WIFI成功"; }else { result = "关闭WIFI失败"; } break; case R.id.btn_getWifiStatus: switch (Manager.getWifiState()){ case WifiManager.WIFI_STATE_DISABLED: result = "WIFI已关闭"; break; case WifiManager.WIFI_STATE_DISABLING: result = "WIFI正在关闭中"; break; case WifiManager.WIFI_STATE_ENABLED: result = "WIFI已启用WIFI"; break; case WifiManager.WIFI_STATE_ENABLING: result = "WIFI正在启动中"; break; case WifiManager.WIFI_STATE_UNKNOWN: result = "WIFI未知状态"; break; } break; //得到网络状态 case R.id.btn_getWorkStatus: if(isNetworkOnline()){ result = "有网络..."; }else { result = "没有网络..."; } break; //得到网络数据 case R.id.btn_getData: if(isNetworkOnline()) { result = "正在请求数据....."; customTask = new CustomTask(); customTask.execute("http://www.baidu.com"); }else { result = "此时无可用网络,请检查"; } break; } //提示 Toast.makeText(this,result,Toast.LENGTH_SHORT).show(); } //自定义CustomTask类 private class CustomTask extends AsyncTask<String,Integer,String>{ //这个string是使用execute传进去的URL @Override protected String doInBackground(String... strings) { try { HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(strings[0]); HttpResponse response = client.execute(get);//启动 //判断是否有数据(通过状态码) if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ HttpEntity entity = response.getEntity(); //得到数据 return EntityUtils.toString(entity); //直接返回数据就行了(字符串强转) //不需要再放进缓冲区 这里会出错,中文问题// InputStream is = entity.getContent(); //存放到缓冲区// long size = entity.getContentLength(); //得到数据的长度// ByteArrayOutputStream outs = new ByteArrayOutputStream();// byte[] buffer = new byte[1024];// int legth = -1;// //不断的读取// while ((legth = is.read(buffer))!=-1){// outs.write(buffer,0,legth);// }// is.close();// outs.close();// return new String(outs.toByteArray(),"UTF-8"); } } catch (IOException e) { e.printStackTrace(); } return null; } //监听 得到doInBackground的返回值 @Override protected void onPostExecute(String s) { //把得到的数据显示在控件上,显示的都是字符 tv_show.setText(s); } @Override protected void onPreExecute() { //tv_show.setText(); } } /** * 检查网络状态 * @return true:有网络 * false:没有网络 */ public boolean isNetworkOnline() { //得到系统服务 网络连接状态类 ConnectivityManager conn = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); //得到网络信息 NetworkInfo networkInfo = conn.getActiveNetworkInfo(); //返回值通过判断网络信息是否为NUll并且网络是都连接 return (networkInfo!=null && networkInfo.isConnected()); }}
其实可以创建一个新页面,放入一个Wed控件,把得到的数据用网页显示出来~~~
- AndroidWIFI的基本实现
- androidwifi
- AndroidWIFI模块测试
- AndroidWIFI模块测试
- 设置androidwifi连接,
- AndroidWIFI自动连接
- 队列的基本实现
- viewFlipper的基本实现
- 单链表的基本实现
- 基本动画的实现
- Ajax 的基本实现
- 栈的基本实现
- 图的基本实现
- 树的基本实现
- 堆的基本实现
- 基本的ListView实现
- 继承的基本实现
- ExpandableListActivity的基本实现
- 一、山雨欲来
- Class.forName加载自定义类(无参数构造方法)
- Bootstrap—200多种字体图形,你想要的都在这里
- Ember 翻译——教程二:设置测试
- python之一键序列化命名当前目录
- AndroidWIFI的基本实现
- 基于Python的网页文档处理脚本实现
- Ember 翻译——教程三:路由和模板
- 个人搭建hexo并部署到github期间遇到的问题
- http协议概念及其工作流程
- Pycharm 2016.3 注册码 mac 亲测可用
- 每日一结,分页查询和Listener监听器
- 【IDEA】IDEA常用配置
- hexo部署问题:spawn git ENOENT