android 基于wifi模块通信开发
<p>这篇文章主要是我写完手机与wifi模块通信后所用来总结编写过程的文章,下面,我分几点来说一下编写的大概流程。</p><p>一、拉出按钮控件并设置它的点击事件</p>
<p>二、设置wifi权限</p>
<p>三、打开和关闭wifi</p>
<p>四、扫描wifi到列表中</p>
<p> (1)拉出ListView控件,并设置它的适配器和点击事件</p>
<p> (2)注册广播</p>
<p> (3)动态申请位置权限</p>
<p> (4)添加并显示到列表控件</p>
<p> (5)注销广播</p>
<p>五、连接wifi设备</p>
<p> </p>
<p> </p>
<p>一、拉出按钮控件并设置它的点击事件</p>
<p>首先,我们在新建的项目中的布局文件,即activity_main.xml文件中,添加按钮控件的声明。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <<span style="color: rgba(0, 0, 0, 1)">Button
</span><span style="color: rgba(0, 128, 128, 1)">2</span> android:id="@+id/OPEN"
<span style="color: rgba(0, 128, 128, 1)">3</span> android:layout_width="wrap_content"
<span style="color: rgba(0, 128, 128, 1)">4</span> android:layout_height="wrap_content"
<span style="color: rgba(0, 128, 128, 1)">5</span> android:text="打开WiFi" /></pre>
</div>
<p>然后,我们到MainActivity.java文件中,定义Button对象。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">public</span> Button openWifi;</pre>
</div>
<p>然后,我们在MainActivity.java文件中的onCreate()方法中给Button的对象赋值,其中,fingViewById()的参数为我们在xml文件中定义的按钮的id名。</p>
<div class="cnblogs_code">
<pre> openWifi = (Button) findViewById(R.id.OPEN);</pre>
</div>
<p>接下来,我们就可以开始设置点击事件了。我们在onCreate()中,调用setOnClickListener()方法。</p>
<div class="cnblogs_code">
<pre>openWifi.setOnClickListener(<span style="color: rgba(0, 0, 255, 1)">this</span>);</pre>
</div>
<p>最后,我们在MainActivity.java中重写onClick()方法即可。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">@Override
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> OnClick(View v)
{
</span><span style="color: rgba(0, 0, 255, 1)">switch</span><span style="color: rgba(0, 0, 0, 1)">(v.getId())
{
</span><span style="color: rgba(0, 0, 255, 1)">case</span> R.id.OPEN: <span style="color: rgba(0, 0, 255, 1)">break</span><span style="color: rgba(0, 0, 0, 1)">;
}
}</span></pre>
</div>
<p> </p>
<p> </p>
<p>二、设置wifi权限</p>
<p>我们可以在AndroidManifest.xml中添加权限。</p>
<div class="cnblogs_code">
<pre> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 允许改变wifi连接状态 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 允许应用获取网络状态信息 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 允许应用获得WiFi信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取位置信息 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 获取手机状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 读写SD卡 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" /></pre>
</div>
<p> </p>
<p> </p>
<p>三、打开和关闭wifi</p>
<p>首先,我们要先定义一个WifiManager类的对象。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">final</span> WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);</pre>
</div>
<p>然后我们只要在按钮的点击事件中添加以下代码即可。</p>
<div class="cnblogs_code">
<pre>wifiManager.setWifiEnabled(<span style="color: rgba(0, 0, 255, 1)">true</span>); //开启wifi</pre>
</div>
<div class="cnblogs_code">
<pre>wifiManager.setWifiEnabled(<span style="color: rgba(0, 0, 255, 1)">false</span>);//关闭wifi</pre>
</div>
<p> </p>
<p> </p>
<p>四、扫描wifi到列表中</p>
<p>(1)、拉出ListView控件,并设置它的适配器和点击事件</p>
<p>首先,我们要在activity_main.xml文件中,添加列表控件的声明。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">ListView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/LIST"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(0, 0, 255, 1)">></</span><span style="color: rgba(128, 0, 0, 1)">ListView</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>然后,我们要在MainActivity.java文件中,定义ListView对象。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">public</span> ListView listView;</pre>
</div>
<p>同理,我们要在onCreate()方法中设置列表的点击事件。</p>
<div class="cnblogs_code">
<pre>listView.setOnItemClickListener(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> AdapterView.OnItemClickListener() {
@Override
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span> onItemClick(AdapterView<?> adapterView, View view, <span style="color: rgba(0, 0, 255, 1)">int</span> i, <span style="color: rgba(0, 0, 255, 1)">long</span><span style="color: rgba(0, 0, 0, 1)"> l) {
}
});</span></pre>
</div>
<p>添加完后,我们就可以触发列表的点击事件了。但是,这样还是看不见列表里的变化的,因为我们还没有为列表添加适配器。我们可以先了解一下适配器是什么。适配器是一个连接数据和AdapterView(ListView就是一个典型的AdapterView)的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便。</p>
<p>接下来,我们就开始定义适配器和有个集合类对象。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">public</span> ArrayAdapter adapter;</pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">public</span> ArrayList<String> arrayList = <span style="color: rgba(0, 0, 255, 1)">new</span> ArrayList(); //用于存放字符串</pre>
<pre><span style="color: rgba(204, 120, 50, 1)">public ArrayList<ScanResult> <span style="color: rgba(152, 118, 170, 1)">scanList = <span style="color: rgba(204, 120, 50, 1)">new ArrayList()<span style="color: rgba(204, 120, 50, 1)">; //用于存放扫描到的设备的信息</span></span></span></span></pre>
</div>
<p>然后,我们在onCreate()方法中给适配器赋值。</p>
<div class="cnblogs_code">
<pre> adapter = <span style="color: rgba(0, 0, 255, 1)">new</span> ArrayAdapter(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">, android.R.layout.simple_expandable_list_item_1, arrayList);
listView.setAdapter(adapter);</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置列表显示</span></pre>
</div>
<p>(2)注册广播</p>
<p>首先,我们要在onCreate()中定义IntentFilter的对象。</p>
<div class="cnblogs_code">
<pre> IntentFilter filter = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> IntentFilter();
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);</span></pre>
</div>
<p>接下来我们要重写<span style="color: rgba(0, 0, 0, 1)">BroadcastReceiver类来定义广播。</span></p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)">private</span> BroadcastReceiver receiver = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> BroadcastReceiver() {
@Override
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span> onReceive(<span style="color: rgba(0, 0, 255, 1)">final</span><span style="color: rgba(0, 0, 0, 1)"> Context context, Intent intent) {
</span><span style="color: rgba(0, 0, 255, 1)">final</span> WifiManager wifiManager =<span style="color: rgba(0, 0, 0, 1)"> (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
String action </span>=<span style="color: rgba(0, 0, 0, 1)"> intent.getAction();
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (action.equals(wifiManager.SCAN_RESULTS_AVAILABLE_ACTION))<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">搜索到可用的wifi</span>
<span style="color: rgba(0, 0, 0, 1)"> {
scanResults </span>= wifiManager.getScanResults();<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取wifi的扫描结果</span>
scanResults =<span style="color: rgba(0, 0, 0, 1)"> getNewList(scanResults);
</span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> (ScanResult scanResult : scanResults) {
arrayList.add(scanResult.SSID);
scanList.add(scanResult);
adapter.notifyDataSetChanged();
}
}
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
NetworkInfo info </span>=<span style="color: rgba(0, 0, 0, 1)"> intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (info.getState().equals(NetworkInfo.State.CONNECTED)) {
</span><span style="color: rgba(0, 0, 255, 1)">final</span> WifiInfo wifiInfo =<span style="color: rgba(0, 0, 0, 1)"> wifiManager.getConnectionInfo();
Toast.makeText(context, </span>"已成功连接" +<span style="color: rgba(0, 0, 0, 1)"> wifiInfo.getSSID(), Toast.LENGTH_SHORT).show();
} </span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {
Toast.makeText(context, </span>"已断开连接"<span style="color: rgba(0, 0, 0, 1)">, Toast.LENGTH_SHORT).show();
}
}
}
};</span></pre>
</div>
<p>最后,在onCreate()中注册广播。</p>
<div class="cnblogs_code">
<pre>registerReceiver(receiver, filter);</pre>
</div>
<p> (3)申请动态的位置权限</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> applypermission() {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (Build.VERSION.SDK_INT >= 23<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">检查是否已经给了权限</span>
<span style="color: rgba(0, 0, 255, 1)">int</span> checkpermission =<span style="color: rgba(0, 0, 0, 1)"> ContextCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.ACCESS_FINE_LOCATION);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (checkpermission != PackageManager.PERMISSION_GRANTED) {<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">没有给权限</span>
Log.e("permission", "动态申请"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">参数分别是当前活动,权限字符串数组,requestcode</span>
ActivityCompat.requestPermissions(WiFiMainActivity.<span style="color: rgba(0, 0, 255, 1)">this</span>, <span style="color: rgba(0, 0, 255, 1)">new</span> String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1<span style="color: rgba(0, 0, 0, 1)">);
}
}
}
@Override
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span> onRequestPermissionsResult(<span style="color: rgba(0, 0, 255, 1)">int</span> requestCode, @NonNull String[] permissions, @NonNull <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)">[] grantResults) {
</span><span style="color: rgba(0, 0, 255, 1)">super</span><span style="color: rgba(0, 0, 0, 1)">.onRequestPermissionsResult(requestCode, permissions, grantResults);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (grantResults ==<span style="color: rgba(0, 0, 0, 1)"> PackageManager.PERMISSION_GRANTED) {
Toast.makeText(WiFiMainActivity.</span><span style="color: rgba(0, 0, 255, 1)">this</span>, "已授权"<span style="color: rgba(0, 0, 0, 1)">, Toast.LENGTH_SHORT).show();
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
Toast.makeText(WiFiMainActivity.</span><span style="color: rgba(0, 0, 255, 1)">this</span>, "拒绝授权"<span style="color: rgba(0, 0, 0, 1)">, Toast.LENGTH_SHORT).show();
}
}</span></pre>
</div>
<p>(4)添加并显示到列表控件</p>
<p>添加有个按钮控件,然后在调用startScan()方法就可以开始扫描了。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> scanWiFi() {
adapter.clear(); //清空列表里的数据
adapter.notifyDataSetChanged(); //刷新
WifiManager wifiManager </span>=<span style="color: rgba(0, 0, 0, 1)"> (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">wifiManager.isWifiEnabled()) { //判断wifi是否打开
wifiManager.setWifiEnabled(</span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">); //如果没有打开就打开wifi
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">开始扫描wifi设备</span>
<span style="color: rgba(0, 0, 0, 1)"> wifiManager.startScan();
}</span></pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">public</span> List<ScanResult> getNewList(List<ScanResult><span style="color: rgba(0, 0, 0, 1)"> list) {
List</span><ScanResult> lists = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> ArrayList();
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (<span style="color: rgba(0, 0, 255, 1)">int</span> i = 0; i < list.size(); i++<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">lists.contains(list.get(i))) {
lists.add(list.get(i));
}
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> lists;
}</span></pre>
</div>
<p> </p>
<p> </p>
<p>(5)注销广播</p>
<p> 在onCreate()中使用unregisterReceiver()方法注销广播。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> onDestroy() {
</span><span style="color: rgba(0, 0, 255, 1)">super</span>.onDestroy();<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">解除注册</span>
<span style="color: rgba(0, 0, 0, 1)"> unregisterReceiver(receiver);
}</span></pre>
</div>
<p> </p>
<p> </p>
<p>五、连接wifi设备</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">wifiManager.disconnect();
</span><span style="color: rgba(0, 0, 255, 1)">final</span> ScanResult result =<span style="color: rgba(0, 0, 0, 1)"> scanList.get(i);
String capabilities </span>=<span style="color: rgba(0, 0, 0, 1)"> result.capabilities;
</span><span style="color: rgba(0, 0, 255, 1)">int</span> type =<span style="color: rgba(0, 0, 0, 1)"> WIFICIPHER_WPA;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!TextUtils.isEmpty(capabilities))<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">判断字符串是否为null</span>
<span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (capabilities.contains("WPA") || capabilities.contains("wpa"<span style="color: rgba(0, 0, 0, 1)">)) {
type </span>=<span style="color: rgba(0, 0, 0, 1)"> WIFICIPHER_WPA;
} </span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (capabilities.contains("WEP") || capabilities.contains("wep"<span style="color: rgba(0, 0, 0, 1)">)) {
type </span>=<span style="color: rgba(0, 0, 0, 1)"> WIFICIPHER_WEP;
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
type </span>=<span style="color: rgba(0, 0, 0, 1)"> WIFICIPHER_NOPASS;
}
config </span>=<span style="color: rgba(0, 0, 0, 1)"> isExsits(result.SSID);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (config == <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (type !=<span style="color: rgba(0, 0, 0, 1)"> WIFICIPHER_NOPASS) {
</span><span style="color: rgba(0, 0, 255, 1)">final</span> EditText editText = <span style="color: rgba(0, 0, 255, 1)">new</span> EditText(WiFiMainActivity.<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">final</span> <span style="color: rgba(0, 0, 255, 1)">int</span> fianalType =<span style="color: rgba(0, 0, 0, 1)"> type;
alertDialog </span>= <span style="color: rgba(0, 0, 255, 1)">new</span> AlertDialog.Builder(WiFiMainActivity.<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">);
alertDialog.setTitle(</span>"请输入WiFi密码:"<span style="color: rgba(0, 0, 0, 1)">);
alertDialog.setView(editText);
alertDialog.setPositiveButton(</span>"OK", <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> DialogInterface.OnClickListener() {
@Override
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span> onClick(DialogInterface dialog, <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> which) {
config </span>=<span style="color: rgba(0, 0, 0, 1)"> createWifiInfo(result.SSID, editText.getText().toString(), fianalType);
connectWifi(config);
}
});
alertDialog.setNegativeButton(</span>"CANCEL", <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">).show();
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
config </span>= createWifiInfo(result.SSID, ""<span style="color: rgba(0, 0, 0, 1)">, type);
connectWifi(config);
}
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
connectWifi(config);
}
}</span></pre>
</div>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> connectWifi(WifiConfiguration config) {
</span><span style="color: rgba(0, 0, 255, 1)">final</span> WifiManager wifiManager =<span style="color: rgba(0, 0, 0, 1)"> (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
</span><span style="color: rgba(0, 0, 255, 1)">int</span> wcgID =<span style="color: rgba(0, 0, 0, 1)"> wifiManager.addNetwork(config);
wifiManager.enableNetwork(wcgID, </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
}</span></pre>
</div>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">public</span> WifiConfiguration createWifiInfo(String SSID, String password, <span style="color: rgba(0, 0, 255, 1)">int</span><span style="color: rgba(0, 0, 0, 1)"> type) {
WifiConfiguration config </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID </span>= "\"" + SSID + "\""<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (type ==<span style="color: rgba(0, 0, 0, 1)"> WIFICIPHER_WEP) {
config.preSharedKey </span>= "\"" + password + "\""<span style="color: rgba(0, 0, 0, 1)">;
config.hiddenSSID </span>= <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex </span>= 0<span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (type ==<span style="color: rgba(0, 0, 0, 1)"> WIFICIPHER_WPA) {
config.preSharedKey </span>= "\"" + password + "\""<span style="color: rgba(0, 0, 0, 1)">;
config.hiddenSSID </span>= <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
config.status </span>=<span style="color: rgba(0, 0, 0, 1)"> WifiConfiguration.Status.ENABLED;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> config;
}</span></pre>
</div>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> WifiConfiguration isExsits(String ssid) {
</span><span style="color: rgba(0, 0, 255, 1)">final</span> WifiManager wifiManager =<span style="color: rgba(0, 0, 0, 1)"> (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
List</span><WifiConfiguration> existingConfigs =<span style="color: rgba(0, 0, 0, 1)"> wifiManager.getConfiguredNetworks();
</span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> (WifiConfiguration existingConfig : existingConfigs) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (existingConfig.SSID.equals("\"" + ssid + "\""<span style="color: rgba(0, 0, 0, 1)">))
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> existingConfig;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
}</span></pre>
</div>
<p> </p><br><br>
来源:https://www.cnblogs.com/lwkdbk/p/10760321.html
頁:
[1]