⑴ android wifi 是怎麼實現打開wifi後自動連接的
設置靜態IP既可先連接好wifi然後點擊它在hdcp那裡點擊靜態確定既可
⑵ Android設備如何連接其他的無線設備(NSD,wifi Direct)
依賴和前提條件: Android 4.1 以上 除了連接雲,Android的無線api還支持與其他設備在同一個區域網連接,甚至設備未網路,但在地理位置附近。添加網路服務發現(NSD)使得這項功能,通過允許一個應用程序來通過運行可以連接的服務尋找附近的一個裝置。此功能集成到您的應用程序將幫助您提供范圍廣泛的功能,如在同一個房間里與其他用戶玩游戲,把圖像從一個網路攝像頭,或者遠程nsd啟用日誌記錄到在同一網路的其他機器。 課程Using Network Service Discovery * 學習使用你的應用程序廣播服務,發現區域網提供的服務。並且通過NSD確定你想連接的服務的細節。 Connecting with Wi-Fi Direct * 學習獲取附近設備的清單,為還沒有連接的設備創建接入點,並且使用 Wi-Fi Direct連接其他設備。
⑶ 用於Android Studio手機無線Wifi調試的兩種解決方案
用於Android Studio手機無線Wifi調試的兩種解決方案
第一種方法是使用adbWireless連接
使用adbWireless工具,它可以使手機使用無線而不是USB連接並使用ADB工具
1. 手機必須與計算機位於同一區域網中
2. 在手機上安裝adbWireless並將其打開,它將在其上顯示IP地址
3. 在Android Studio的終端中執行adb connect 192.168.137.134:5555
好的,這樣您就可以快樂地連接
八卦: 需要配置終端. 我們通常在開發時使用adb命令. 有了這個工具,我們可以
管理設備或手機的狀態. 快速更新設備或手機中的代碼,例如應用程序或Android系統升級. 在設備上運行Shell命令. 管理設備或手機上的預定埠. 將文件復制或粘貼到
它真的超級好用,可以節省很多東西. 如果您不想配置,也可以直接將cmd轉到Android \ Sdk \ platform-tools目錄並執行cmd命令,這比較麻煩.
第二種方法使用插件式Android Wifi ADB連接
Android Studio需要插件
1,安裝
第一個打開的文件->設置->插件
在搜索框中輸入adb,找到最後一個WIFI ADB ULTIMATE,最後單擊安裝以安裝並在安裝後重新啟動Android Studio.
2,使用
重新啟動後,您可以看到:
右列還有一個附加圖標
現在插件准備就緒,我們開始連接. 首先確保
1. 電腦可以打開WIFI熱點
2,電話已連接到計算機WIFI熱點
3. 使用數據線連接到計算機(不要錯過,只有在第一次將其連接到USB時)
然後單擊剛剛出現的小圖標,您將看到一個打開的窗口. 窗口中有通過USB連接的設備列表. 目前,您只需要單擊要無線連接的設備後面的連接(綠色三角形按鈕)即可.
注意: 如果設備只是連接到計算機,則可以單擊藍色的刷新按鈕刷新列表
單擊後,您可以看到一個遠程設備出現在窗口中. 並且AS提示下面的連接成功.
Logcat還顯示此時兩個連接
這時,WiFi連接成功,我們不需要USB數據線,可以拔下它.
拔下USB後,您可以看到還有另一台設備並且沒有斷開連接. 成功且愉快的調試.
摘要
我個人認為第二種方法令人耳目一新,流利性比第一種更好. 它不會凍結,也不會導致設備崩潰. 強烈推薦.
⑷ 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熱點,我們需要熟悉Android里的wifimanager類,下面是結合網路資料和本人實踐給出的方法,供參考:
1. 自定義一個wifiAdmin操作類:
[java] view plain
import java.util.List;
import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;
public class WifiAdmin {
// 定義WifiManager對象
private WifiManager mWifiManager;
// 定義WifiInfo對象
private WifiInfo mWifiInfo;
// 掃描出的網路連接列表
private List<ScanResult> mWifiList;
// 網路連接列表
private List<WifiConfiguration> mWifiConfiguration;
// 定義一個WifiLock
WifiLock mWifiLock;
// 構造器
public WifiAdmin(Context context) {
// 取得WifiManager對象
mWifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
// 取得WifiInfo對象
mWifiInfo = mWifiManager.getConnectionInfo();
}
// 打開WIFI
public void openWifi() {
if (!mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(true);
}
}
// 關閉WIFI
public void closeWifi() {
if (mWifiManager.isWifiEnabled()) {
mWifiManager.setWifiEnabled(false);
}
}
// 檢查當前WIFI狀態
public int checkState() {
return mWifiManager.getWifiState();
}
// 鎖定WifiLock
public void acquireWifiLock() {
mWifiLock.acquire();
}
// 解鎖WifiLock
public void releaseWifiLock() {
// 判斷時候鎖定
if (mWifiLock.isHeld()) {
mWifiLock.acquire();
}
}
// 創建一個WifiLock
public void creatWifiLock() {
mWifiLock = mWifiManager.createWifiLock("Test");
}
// 得到配置好的網路
public List<WifiConfiguration> getConfiguration() {
return mWifiConfiguration;
}
// 指定配置好的網路進行連接
public void connectConfiguration(int index) {
// 索引大於配置好的網路索引返回
if (index > mWifiConfiguration.size()) {
return;
}
// 連接配置好的指定ID的網路
mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
true);
}
public void startScan() {
mWifiManager.startScan();
// 得到掃描結果
mWifiList = mWifiManager.getScanResults();
// 得到配置好的網路連接
mWifiConfiguration = mWifiManager.getConfiguredNetworks();
}
// 得到網路列表
public List<ScanResult> getWifiList() {
return mWifiList;
}
// 查看掃描結果
public StringBuilder lookUpScan() {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < mWifiList.size(); i++) {
stringBuilder
.append("Index_" + new Integer(i + 1).toString() + ":");
// 將ScanResult信息轉換成一個字元串包
// 其中把包括:BSSID、SSID、capabilities、frequency、level
stringBuilder.append((mWifiList.get(i)).toString());
stringBuilder.append("/n");
}
return stringBuilder;
}
// 得到MAC地址
public String getMacAddress() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
}
// 得到接入點的BSSID
public String getBSSID() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
}
// 得到IP地址
public int getIPAddress() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
}
// 得到連接的ID
public int getNetworkId() {
return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
}
// 得到WifiInfo的所有信息包
public String getWifiInfo() {
return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
}
// 添加一個網路並連接
public boolean addNetwork(WifiConfiguration wcg) {
int wcgID = mWifiManager.addNetwork(wcg);
boolean b = mWifiManager.enableNetwork(wcgID, true);
System.out.println("a--" + wcgID);
System.out.println("b--" + b);
return b;
}
// 斷開指定ID的網路
public void disconnectWifi(int netId) {
mWifiManager.disableNetwork(netId);
mWifiManager.disconnect();
}
//然後是一個實際應用方法,只驗證過沒有密碼的情況:
public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type)
{
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = "\"" + SSID + "\"";
WifiConfiguration tempConfig = this.IsExsits(SSID);
if(tempConfig != null) {
mWifiManager.removeNetwork(tempConfig.networkId);
}
if(Type == 1) //WIFICIPHER_NOPASS
{
config.wepKeys[0] = "";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
}
if(Type == 2) //WIFICIPHER_WEP
{
config.hiddenSSID = true;
config.wepKeys[0]= "\""+Password+"\"";
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 = 0;
}
if(Type == 3) //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;
}
private WifiConfiguration IsExsits(String SSID)
{
List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();
for (WifiConfiguration existingConfig : existingConfigs)
{
if (existingConfig.SSID.equals("\""+SSID+"\""))
{
return existingConfig;
}
}
return null;
}
}
//分為三種情況:1沒有密碼2用wep加密3用wpa加密
2.調用時是這樣的:
[java] view plain
WifiAdmin wifiAdmin = new WifiAdmin(wifiTest.this); //wifiTest.this is a context for sample;
wifiAdmin.openWifi();
WifiConfiguration wcg=wifiAdmin.CreateWifiInfo(wifiName, wifiPass,3); //wifiName is the SSID; wifiPass is the password;
wifiAdmin.addNetwork(wcg);
3.稍等片刻,便會連接上wifi了