『壹』 android設備連無線路由wifi上網,應該如何設置呢
你路由器沒設置吧。
要讓路由器上網才行,modem出口的網線連接到路由器的WAN口。
路由器的LAN口連接電腦。
用電腦進入網址192.168.1.1
用戶名密碼都是admin
。
進入後設置網路。。按說明書
一步一步設置好。然後設置無線。。
前提是你的路由器連接網路了才可以讓下端設備上網。
1.恢復到路由器的出廠設置。
2.重新配置下路由器。
3.設置android設備的WIFI設置。
『貳』 android 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
public class HotspotActivity extends Activity {
private WifiManager wifiManager;
private Button open;
private boolean flag=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//獲取wifi管理服務
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
open=(Button)findViewById(R.id.open_hotspot);
//通過按鈕事件設置熱點
open.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//如果是打開狀態就關閉,如果是關閉就打開
flag=!flag;
setWifiApEnabled(flag);
}
});
}
// wifi熱點開關
public boolean setWifiApEnabled(boolean enabled) {
if (enabled) { // disable WiFi in any case
//wifi和熱點不能同時打開,所以打開熱點的時候需要關閉wifi
wifiManager.setWifiEnabled(false);
}
try {
//熱點的配置類
WifiConfiguration apConfig = new WifiConfiguration();
//配置熱點的名稱(可以在名字後面加點隨機數什麼的)
apConfig.SSID = "YRCCONNECTION";
//配置熱點的密碼
apConfig.preSharedKey="12122112";
//通過反射調用設置熱點
Method method = wifiManager.getClass().getMethod(
"setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);
//返回熱點打開狀態
return (Boolean) method.invoke(wifiManager, apConfig, enabled);
} catch (Exception e) {
return false;
}
}
}
在人家網易博客上看到的
博主:bsky
『肆』 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 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; }}