- 浏览: 108990 次
- 性别:
- 来自: 昆明
文章分类
- 全部博客 (151)
- 120D02 (5)
- 直升机 (1)
- 我的技术资料收集 (82)
- 的技术资料收集 (4)
- .NET Solution (2)
- ASP.NET (1)
- Linq to sql (1)
- 数据库技术(MS SQL) (2)
- 架构/设计 (1)
- 敏捷/持续集成 (1)
- C#.NET开发 (1)
- Matlab开发 (1)
- WinForm开发 (1)
- 开源技术 (1)
- jQuery (1)
- 我的博文 (4)
- js (2)
- android (2)
- 9. 读书笔记 (1)
- CSS3 (1)
- HTML5 (1)
- JavaScript (5)
- 移动开发 (2)
- 编程心得 (1)
- Linux操作系统 (1)
- (BI)商业智能 (1)
- IOS (1)
- Windows Phone (2)
- C# API (1)
- JQuery系列 (1)
- TFS (1)
- C# (2)
- ExtJs (1)
- .NET (1)
- Nginx (1)
- WCF学习笔记 (1)
- Computer Graphic (1)
- IT产品 (1)
- 工具分享 (1)
- MySelf (1)
- C#专栏 (1)
- 管理 (1)
- 基于Oracle Logminer数据同步 (1)
- 日常 (1)
- 实用工具 (1)
- 网页设计 (1)
- avalon (1)
- flash (1)
- DDD (1)
- 01 技术Android (1)
- WCF (1)
- selenium (1)
最新评论
-
464410531:
三国杀。。。。。。。。。。。。。。。。。。。。。。。。。。。。 ...
实用的职场宝典:不提拔你,就因为你只想把工作做好
原帖地址:http://www.cnblogs.com/huang0925/archive/2013/06/05/3118693.html
<article class="hentry" role="article"><div class="entry-content">
<br><br><p>最近在做一个小的应用,需要通过程序设置安卓手机的AP(Access point, 即将手机变为一个移动热点,其他机器能够通过wifi连接到此手机)。原以为很简单的一个东西,还是花费了一番周折,最终还是搞定了。</p>
<br><br><!-- more --><br><br><br><p>配置AP的选项是属于配置wifi的一部分,所以他们都在WifiManager这个类中。<br>获取当前系统的WifiManager实例的方法是:</p>
<br><br><figure class="code"><figcaption><span></span></figcaption><div class="highlight"><table><tr>
<br><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span><br></pre></td>
<br><td class="code"><pre><code class="java"><span class="line"><span class="n">WifiManager</span> <span class="n">wifi</span> <span class="o">=</span> <span class="o">(</span><span class="n">WifiManager</span><span class="o">)</span> <span class="n">getSystemService</span><span class="o">(</span><span class="n">Context</span><span class="o">.</span><span class="na">WIFI_SERVICE</span><span class="o">);</span><br></span></code></pre></td>
<br>
</tr></table></div></figure><p>此类中有几个关键方法用来设置AP,但是它们都是被隐藏的,我们无法直接调用,所以只有通过反射的方式来调用。</p>
<br><br><p>获取AP当前状态的方法是:</p>
<br><br><figure class="code"><figcaption><span></span></figcaption><div class="highlight"><table><tr>
<br><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></pre></td>
<br><td class="code"><pre><code class="java"><span class="line"><span class="kd">private</span> <span class="n">Boolean</span> <span class="nf">getApState</span><span class="o">(</span><span class="n">WifiManager</span> <span class="n">wifi</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">NoSuchMethodException</span><span class="o">,</span> <span class="n">IllegalAccessException</span><span class="o">,</span> <span class="n">InvocationTargetException</span> <span class="o">{</span><br></span><span class="line"> <span class="n">Method</span> <span class="n">method</span> <span class="o">=</span> <span class="n">wifi</span><span class="o">.</span><span class="na">getClass</span><span class="o">().</span><span class="na">getMethod</span><span class="o">(</span><span class="s">"isWifiApEnabled"</span><span class="o">);</span><br></span><span class="line"> <span class="k">return</span> <span class="o">(</span><span class="n">Boolean</span><span class="o">)</span> <span class="n">method</span><span class="o">.</span><span class="na">invoke</span><span class="o">(</span><span class="n">wifi</span><span class="o">);</span><br></span><span class="line"> <span class="o">}</span><br></span></code></pre></td>
<br>
</tr></table></div></figure><p>配置AP要使用到WifiConfiguration这个类,以下是设置的一个AP。</p>
<br><br><figure class="code"><figcaption><span></span></figcaption><div class="highlight"><table><tr>
<br><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br></pre></td>
<br><td class="code"><pre><code class="java"><span class="line"><span class="kd">private</span> <span class="n">WifiConfiguration</span> <span class="nf">getApConfiguration</span><span class="o">()</span> <span class="o">{</span><br></span><span class="line"> <span class="n">WifiConfiguration</span> <span class="n">apConfig</span> <span class="o">=</span> <span class="k">new</span> <span class="n">WifiConfiguration</span><span class="o">();</span><br></span><span class="line"> <span class="c1">//配置热点的名称</span><br></span><span class="line"> <span class="n">apConfig</span><span class="o">.</span><span class="na">SSID</span> <span class="o">=</span> <span class="s">"yourId"</span><span class="o">;</span><br></span><span class="line"> <span class="n">apConfig</span><span class="o">.</span><span class="na">allowedAuthAlgorithms</span><span class="o">.</span><span class="na">set</span><span class="o">(</span><span class="n">WifiConfiguration</span><span class="o">.</span><span class="na">AuthAlgorithm</span><span class="o">.</span><span class="na">OPEN</span><span class="o">);</span><br></span><span class="line"> <span class="n">apConfig</span><span class="o">.</span><span class="na">allowedKeyManagement</span><span class="o">.</span><span class="na">set</span><span class="o">(</span><span class="n">WifiConfiguration</span><span class="o">.</span><span class="na">KeyMgmt</span><span class="o">.</span><span class="na">WPA_PSK</span><span class="o">);</span><br></span><span class="line"> <span class="n">apConfig</span><span class="o">.</span><span class="na">allowedProtocols</span><span class="o">.</span><span class="na">set</span><span class="o">(</span><span class="n">WifiConfiguration</span><span class="o">.</span><span class="na">Protocol</span><span class="o">.</span><span class="na">RSN</span><span class="o">);</span><br></span><span class="line"> <span class="n">apConfig</span><span class="o">.</span><span class="na">allowedProtocols</span><span class="o">.</span><span class="na">set</span><span class="o">(</span><span class="n">WifiConfiguration</span><span class="o">.</span><span class="na">Protocol</span><span class="o">.</span><span class="na">WPA</span><span class="o">);</span><br></span><span class="line"> <span class="c1">//配置热点的密码</span><br></span><span class="line"> <span class="n">apConfig</span><span class="o">.</span><span class="na">preSharedKey</span> <span class="o">=</span> <span class="s">"yourPassword"</span><span class="o">;</span><br></span><span class="line"> <span class="k">return</span> <span class="n">apConfig</span><span class="o">;</span><br></span><span class="line"> <span class="o">}</span><br></span></code></pre></td>
<br>
</tr></table></div></figure><p>应用AP配置并启用AP要使用另一个被隐藏的方法<code>setWifiApEnabled</code>。<strong>需要注意的是启用AP前要将当前手机的wifi关闭,否则会启动失败。</strong></p>
<br><br><figure class="code"><figcaption><span></span></figcaption><div class="highlight"><table><tr>
<br><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></pre></td>
<br><td class="code"><pre><code class="java"><span class="line"> <span class="kd">private</span> <span class="kt">void</span> <span class="nf">setWifiAp</span><span class="o">()</span> <span class="o">{</span><br></span><span class="line"><br></span><span class="line"><br></span><span class="line"> <span class="n">Method</span> <span class="n">method</span> <span class="o">=</span> <span class="n">wifi</span><span class="o">.</span><span class="na">getClass</span><span class="o">().</span><span class="na">getMethod</span><span class="o">(</span><br></span><span class="line"> <span class="s">"setWifiApEnabled"</span><span class="o">,</span> <span class="n">WifiConfiguration</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">Boolean</span><span class="o">.</span><span class="na">TYPE</span><span class="o">);</span><br></span><span class="line"><br></span><span class="line"> <span class="n">wifi</span><span class="o">.</span><span class="na">setWifiEnabled</span><span class="o">(</span><span class="kc">false</span><span class="o">);</span><br></span><span class="line"> <span class="n">method</span><span class="o">.</span><span class="na">invoke</span><span class="o">(</span><span class="n">wifi</span><span class="o">,</span> <span class="kc">null</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span><br></span><span class="line"> <span class="o">}</span><br></span></code></pre></td>
<br>
</tr></table></div></figure><p>最后,一定要注意要在AndroidManifest.xml文件中设置几个权限。否则在调用API时会产生<code>java.lang.SecurityException: Permission Denied</code>的异常。<br>需要加入的权限如下:</p>
<br><br><figure class="code"><figcaption><span></span></figcaption><div class="highlight"><table><tr>
<br><td class="gutter"><pre class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></pre></td>
<br><td class="code"><pre><code class="xml"><span class="line"><span class="nt"><uses-permission</span> <span class="na">android:name=</span><span class="s">"android.permission.ACCESS_NETWORK_STATE"</span> <span class="nt">/></span><br></span><span class="line"><span class="nt"><uses-permission</span> <span class="na">android:name=</span><span class="s">"android.permission.ACCESS_WIFI_STATE"</span> <span class="nt">/></span><br></span><span class="line"><span class="nt"><uses-permission</span> <span class="na">android:name=</span><span class="s">"android.permission.CHANGE_WIFI_STATE"</span> <span class="nt">/></span><br></span><span class="line"><span class="nt"><uses-permission</span> <span class="na">android:name=</span><span class="s">"android.permission.CHANGE_NETWORK_STATE"</span> <span class="nt">/></span><br></span></code></pre></td>
<br>
</tr></table></div></figure><p>源码我已经放置到github上了,需要的请自行checkout。地址是:<a href="https://github.com/huangbowen521/APSwitch">https://github.com/huangbowen521/APSwitch</a></p>
<br>
</div></article>
发表评论
-
Javascript:猜猜弹出的是啥?为啥? - 幸福框架
2013-06-28 13:33 430原帖地址:http://www.cnblogs.com/hap ... -
C#中WindowsForm常见控件的运用 -- - 李晓峰
2013-06-28 13:27 1747原帖地址:http://www.cnblogs.com/liy ... -
海量数据处理利器之Hash——在线邮件地址过滤 - MyDetail
2013-06-27 12:00 654原帖地址:http://www.cnblo ... -
ASP.NET MVC 4 for Visual Studio 2010 下载地址 - 张鸿伟
2013-06-27 11:48 754原帖地址:http://www.cnblogs.com/wei ... -
【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化 - r01cn
2013-06-26 11:00 919原帖地址:http://www.cnblogs.com/r01 ... -
[珠玑之椟]估算的应用与Little定律 - 五岳
2013-06-26 10:54 639原帖地址:http://www.cnblogs.com/wuy ... -
30行,金额转人民币大写的代码 - 史蒂芬.王
2013-06-26 10:42 1028原帖地址:http://www.cnblogs.com/ste ... -
从银行的钱荒看一个公司的团队建设 产品线过多最终导致最赚钱的项目面临破产 - James Li
2013-06-26 10:36 632原帖地址:http://www.cnblogs.com/Jam ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 13:39 535原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 13:33 615原帖地址:http://www.cnblo ... -
如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap" - 量子计算机
2013-06-25 13:27 869原帖地址:http://www.cnblogs.com/DSh ... -
一步一步将自己的代码转换为观察者模式 - 文酱
2013-06-23 11:36 608原帖地址:http://www.cnblo ... -
iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance) - VicStudio
2013-06-23 11:30 543原帖地址:http://www.cnblogs.com/vic ... -
记录asp.net在IE10下事件丢失排错经过 - Adming
2013-06-23 11:24 710原帖地址:http://www.cnblogs.com/wea ... -
记 FineUI 官方论坛所遭受的一次真实网络攻击!做一个像 ice 有道德的黑客! - 三生石上
2013-06-23 11:18 793原帖地址:http://www.cnblogs.com/san ... -
3、使用Oracle Logminer同步Demo
2013-06-19 10:33 571原帖地址:http://www.cnblogs.com/shi ... -
算法实践——数独的基本解法
2013-06-19 10:27 1450原帖地址:http://www.cnblogs.com/gre ... -
简单实现TCP下的大文件高效传输
2013-06-19 10:21 691原帖地址:http://www.cnblogs.com/sma ... -
avalon - 初步接触
2013-06-18 10:06 783原帖地址:http://www.cnblogs.com/aar ... -
Nginx学习笔记(一) Nginx架构
2013-06-18 09:59 527原帖地址:http://www.cnblogs.com/cod ...
相关推荐
【百度地图API调用Demo】是一个专为Android开发者设计的示例项目,它全面展示了如何在移动应用中集成和利用百度地图API实现各种功能。这个Demo涵盖了百度地图API的大部分基本功能,对于初学者来说,这是一个很好的...
【百度地图API定位(Android)】是Android应用开发中的一个重要环节,它允许用户在应用程序中获取当前位置、导航、搜索地点等功能。在这个项目中,开发者已经完成了一个可运行的示例,并且进行了测试,确保了其功能...
在安卓应用开发中,调用百度地图API是常见的需求,特别是在构建导航、定位或地理信息服务相关的应用程序时。本文将深入探讨如何在Android平台上集成百度地图API,实现定位和搜索功能。 首先,集成百度地图API需要在...
开发者需要集成`baidumap-sdk`库,然后创建`LocationClient`对象,设置监听器`LocationListener`,通过调用`requestLocation()`方法启动定位服务。定位结果会通过`onLocationChanged(Location location)`方法回调,...
在Android开发中,集成地图功能是一项常见的需求,而百度地图API为开发者提供了丰富的地图操作接口。本篇将详细讲解如何在Android应用中调用百度地图并实现自定义覆盖层,以便将数据可视化地展示在地图上。 首先,...
在安卓开发中,掌握如何利用第三方地图API进行位置服务是至关重要的。本示例源码主要涉及了Android平台上的百度地图API,它提供了丰富的定位和地图功能,包括但不限于获取用户当前位置、搜索周边兴趣点(POI)等。...
在Android开发中,百度地图API是一个非常重要的工具,它提供了丰富的功能,如定位、地图展示、路线规划、周边搜索等。这个"Android 百度地图API-定位周边搜索POI源码.7z"文件应该包含了一个完整的示例项目,用于演示...
调用百度地图API的`PoiSearch`类,设置搜索参数并发起请求: ```java PoiSearch poiSearch = new PoiSearch(this, PoiSearch.QueryBuilder().around(latitude, longitude, 1000).keyword("餐馆").build()); ...
本资源“安卓wifi蓝牙相关-android代码设置AP热点仅供参考.rar”似乎包含了一些用于通过Android代码来设置Wi-Fi接入点(Access Point, AP)热点的示例,这些代码可能对开发者进行相关功能开发时提供参考。...
该压缩包包含的是一个基于Android平台的高级应用源码,主要使用了百度地图API来实现定位及周边搜索功能。在Android开发中,这样的应用是非常常见的,它涉及到许多关键的Android和百度地图API技术。以下是对这些知识...
在创建应用后,会得到一个API密钥(Key),这个Key是后续调用API的关键。 2. **添加依赖** 对于Android应用,需要在`build.gradle`文件中引入高德地图SDK依赖。例如: ```gradle implementation '...
在Android应用开发中,集成Google Maps API是一项常见的需求。这篇毕业设计示例代码主要展示了如何在Android项目中调用Google Map并实现地图上的点击事件。本文将深入解析这个主题,帮助你理解Android与Google Maps ...
在Android应用开发中,集成和使用Google Maps API是一项常见的任务,尤其对于构建地理位置相关的应用程序至关重要。这份名为"Android应用源码之调用GoogleMap源码,点击事件在注释里面.zip"的压缩包,显然是一个示例...
本教程将深入探讨如何在Android平台上利用百度地图API实现定位功能以及搜索周边的POI(Point of Interest,兴趣点)。 一、百度地图API简介 百度地图API为开发者提供了丰富的地图功能,包括地图展示、定位、路线...
这份"Android高级应用源码-调用GoogleMap源码,点击事件在注释里面.zip"提供了关于如何在Android应用中集成并使用Google Maps API的具体示例。下面将详细解释其中涉及的关键知识点。 首先,我们要了解Google Maps ...
3. **WiFi定位(WiFi Access Point)**:通过分析周围WiFi热点的MAC地址和已知的WiFi热点数据库来定位。这种方式在室内效果较好,但需要大量的WiFi热点数据支持。同样可以通过`LocationManager`服务的`passive`或`...
在安卓应用开发中,百度地图API是一个非常重要的工具,它为开发者提供了丰富的地图功能,如定位、路线规划、地图展示等。本实例集合主要聚焦于如何在安卓项目中集成和利用百度地图SDK来实现各种实用功能。下面我们将...
在Android系统中,设置接入点(Access Point,简称AP)热点允许设备分享其移动数据连接,使得其他设备可以通过Wi-Fi连接到它,从而共享网络。这个功能通常被称为移动热点或便携式Wi-Fi热点。在本文中,我们将深入...
6. **权限设置**:确保你的应用具有必要的权限,如`INTERNET`和可能的`ACCESS_NETWORK_STATE`。 7. **测试**:在安卓设备上运行应用,尝试拨号连接,检查日志输出以确认连接状态和错误信息。 总的来说,安卓最新...
PrintDemo是一款专为Android平台设计的打印程序演示应用,它主要服务于移动终端的POS(Point of Sale)设备。这个程序的目的是提供一个基础框架,帮助开发者理解和实现Android系统中的打印功能,尤其对于那些需要在...