当前位置:首页 » 安卓系统 » androidwifi开发

androidwifi开发

发布时间: 2022-01-10 15:07:39

① 安卓如何开发WIFI模块程序。

其实你把问题想得太复杂了,你只要想,WiFi模块的作用就是一个转换器,将串口转换成无线WiFi数据,就行,我以前用的HX-M02串口wifi模块做的实验,个人感觉不错,希望对你有帮助。

② Android WiFi开发,如何自动连接的代码

public class WifiAutoConnectManager {
private static final String TAG = WifiAutoConnectManager.class.getSimpleName();
WifiManager wifiManager;
// 定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况 public enum WifiCipherType { WIFICIPHER_WEP, WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID }
// 构造函数 public WifiAutoConnectManager(WifiManager wifiManager) { this.wifiManager = wifiManager; }
// 提供一个外部接口,传入要连接的无线网 public void connect(String ssid, String password, WifiCipherType type) { Thread thread = new Thread(new ConnectRunnable(ssid, password, type)); thread.start(); }
// 查看以前是否也配置过这个网络 private WifiConfiguration isExsits(String SSID) { List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("\"" + SSID + "\"")) { return existingConfig; } } return null; }
private WifiConfiguration createWifiInfo(String SSID, String Password, WifiCipherType Type) { WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; // nopass if (Type == WifiCipherType.WIFICIPHER_NOPASS) { config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } // wep if (Type == WifiCipherType.WIFICIPHER_WEP) { if (!TextUtils.isEmpty(Password)) { if (isHexWepKey(Password)) { config.wepKeys[0] = Password; } else { config.wepKeys[0] = "\"" + Password + "\""; } } config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN); config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED); config.allowedKeyManagement.set(KeyMgmt.NONE); config.wepTxKeyIndex = 0; } // wpa if (Type == WifiCipherType.WIFICIPHER_WPA) { config.preSharedKey = "\"" + Password + "\""; config.hiddenSSID = true; 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.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } return config; }
// 打开wifi功能 private boolean openWifi() { boolean bRet = true; if (!wifiManager.isWifiEnabled()) { bRet = wifiManager.setWifiEnabled(true); } return bRet; }
class ConnectRunnable implements Runnable { private String ssid;
private String password;
private WifiCipherType type;
public ConnectRunnable(String ssid, String password, WifiCipherType type) { this.ssid = ssid; this.password = password; this.type = type; }
@Override public void run() { // 打开wifi openWifi(); // 开启wifi功能需要一段时间(我在手机上测试一般需要1-3秒左右),所以要等到wifi // 状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句 while (wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) { try { // 为了避免程序一直while循环,让它睡个100毫秒检测…… Thread.sleep(100); } catch (InterruptedException ie) { } }
WifiConfiguration wifiConfig = createWifiInfo(ssid, password, type); // if (wifiConfig == null) { Log.d(TAG, "wifiConfig is null!"); return; }
WifiConfiguration tempConfig = isExsits(ssid);
if (tempConfig != null) { wifiManager.removeNetwork(tempConfig.networkId); }
int netID = wifiManager.addNetwork(wifiConfig); boolean enabled = wifiManager.enableNetwork(netID, true); Log.d(TAG, "enableNetwork status enable=" + enabled); boolean connected = wifiManager.reconnect(); Log.d(TAG, "enableNetwork connected=" + connected); } }
private static boolean isHexWepKey(String wepKey) { final int len = wepKey.length();
// WEP-40, WEP-104, and some vendors using 256-bit WEP (WEP-232?) if (len != 10 && len != 26 && len != 58) { return false; }
return isHex(wepKey); }
private static boolean isHex(String key) { for (int i = key.length() - 1; i >= 0; i--) { final char c = key.charAt(i); if (!(c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f')) { return false; } }
return true; }}

③ Android开发中如何建立一个wifi热点

wifi热点的建立不是Java能做的,这里要使用C语言来调用底层的东西才能实现热点功能,wifiManager这个类只是wifi的管理类,这个是不能实现热点的,它只是可以获取你目前连接的路由器的mac地址,名称等信息。

④ android wifi 开发中 如何判断成功连接上了指定的wifi热点

首先通过WifiManager对象获取系统服务的WIFI_SERVICE,然后调用getConnectionInfo()获得WifiInfo对象,再通过WifiInfo对象获取已连上wifi的SSID(实际上是housyunhin说的WifiInfo.getSSID()和其他wifi信息),之后判断是否匹配即可

⑤ 安卓wifi开发,要使用modbus协议,请问该怎么使用

"你好 想问你一个问题~如果我用wifi使用socket发送读写寄存器命令,wifi端用rtu能实现吗?还是必须用modbus/tcp?"

可以. MODBUS其实可以从硬件层与软件层来看 . 硬件层就是通讯的媒介, 一般就是CAT网线或者是RS485这两种居多.

软件层面则分为三个类别, 1: MODBUS TCP(可简单理解为加了一个封包头的MODBUS命令)
2. MODBUS RTU (简单理解为具有CRC校验机制的MODBUS令令) 3. MODBUS ASCII (与RTU相同, 只是命令改为ASCII明码)

再回来看您的问题, WiFi是基于SCOKET也就是TCP方式通讯. 这只是一条道路, 只要MODBUS主机与MODBUS从机事先说好了, 两者都用RTU(具有CRC校验的方式)做通讯, 就可以正常的通讯.
这种方式, 一般俗称为 "RTU OVER TCP" 的MODBUS协定. 即把RTU的格式直接透过SOCKET发送或接收, 就不像MODBUS TCP带前特定的包头了.

另外, 也有人利用UDP来传递MODBUS命令的. 也是OK的. 总之, 硬件层与软件层只要主从机间一致了. 都能通讯上的. 唯一的差别是与其它MODBUS设备的兼容度问题了. 最通用也就是兼容性最高的, 就是 "MODBUS TCP" 与 "MODBUS RTU" 这两种了.

⑥ Android系统手机WiFi通信功能开发

IDE就用Eclipse就足够了 对于Wifi的控制 android.net.wifi下有不少接口 但是要分别开发电视端和手机端 多思考就能找到电视和手机之间通讯的最好方式

⑦ 安卓APP开发怎么访问WIFI

根使用路由器的“懒人模式一键设置”来配置路由器上网参数,并且在加密认证方式那里被默认选择了“自动”的话,就有可能就会出现手机能连WIFI但不能上网的问题
WIFI加密认证类型默认选择“自动”,导致问题出现
WIFI加密认证类型默认选择“自动”,导致问题出现
解决方法:既然知道是WIFI加密类型被默认选择了“自动”的原因,那么解决方案也很简单,手动将WIFI的加密类型选择为最安全可靠的“WPA2-PSK”就行。重启路由器之后,所有设备都能正常上网。

⑧ 安卓开发 WiFi通信

不能实现同时通信,只能相互切换,开启wifi不会关闭移动网络,只是连接上wifi后,网络通道默认走wifi通道,但是可以设置,优先走移动网络通道,有adb命令:
svc wifi prefer
这个是默认的状态,有wifi就是wifi优先。
svc data prefer
这个使移动数据连接比wifi优先。有移动数据开启的话先用移动数据,没有就用wifi。
另外开启/关闭 wifi 和移动数据的命令
svc data enable/disable
svc wifi enable/disable

⑨ android开发中如果我想代码实现打开wifi热点如何实现

1·申请权限:
android.permission.ACCESS_WIFI_STATE
android.permission.CHANGE_WIFI_STATE
android.permission.WAKE_LOCK
2·获取WifiManager
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
3·开启、关闭wifi
if (wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(false);
} else {
wifiManager.setWifiEnabled(true);
}
4·注意
如果遇到force-close, 选wait即可, 因为启动wifi需要几秒钟, UI如果5妙钟还没反映的话, 系统会给你这个force close exception

PS:我以前做过设计读取系统硬件信息的时候用过,但是很长时间没用了,这段注释是从网上来的,希望能帮到你。

⑩ Android开发的WIFI控制

wifiConfigurations为空了吧。getConfiguredNetworks()的说明

Upon failure to fetch or when when Wi-Fi is turned off, it can be null.
获取失败或wifi关闭时候,返回null

热点内容
服务器的空岛如何刷钱 发布:2024-11-15 09:40:52 浏览:262
安卓系统录像设置在哪里 发布:2024-11-15 09:36:33 浏览:917
电信级服务器电脑 发布:2024-11-15 09:26:27 浏览:246
压缩某个文件夹 发布:2024-11-15 09:03:11 浏览:891
网址能解压吗 发布:2024-11-15 08:54:09 浏览:933
python更改目录 发布:2024-11-15 08:41:08 浏览:265
服务器闪存可以装在一般电脑上吗 发布:2024-11-15 08:36:46 浏览:8
安卓手机怎么查询自己的路线轨迹 发布:2024-11-15 08:32:19 浏览:969
phpdatet 发布:2024-11-15 08:32:17 浏览:507
HDB3编译码实验 发布:2024-11-15 08:17:31 浏览:212