Wi-Fi 네트워크를 감지하고 선택한 네트워크에 연결 (연결) 한 후 네트워크를 선택한 간단한 앱을 만들고 싶습니다.Android : 코드를 통해 Wi-Fi를 실행하는 방법
필자는 탐지 단계에 대한 코드를 작성했지만 어떻게 onItemClick()에서 선택한 네트워크에 연결할 수 있습니까? 코드를 제안하십시오.
Wi-Fi 네트워크를 감지하고 선택한 네트워크에 연결 (연결) 한 후 네트워크를 선택한 간단한 앱을 만들고 싶습니다.Android : 코드를 통해 Wi-Fi를 실행하는 방법
필자는 탐지 단계에 대한 코드를 작성했지만 어떻게 onItemClick()에서 선택한 네트워크에 연결할 수 있습니까? 코드를 제안하십시오.
Android는 WiFi 연결을 완벽하게 지원합니다. 주요 구성 요소는 시스템 제공 WiFiManager입니다. 평소와 같이 getSystemServices()를 호출하여 현재 컨텍스트로 가져옵니다.
일단 WiFiManager가 있으면 WiFiInfo 개체 형태로 현재 WiFi 연결을 요청할 수 있습니다. getConfiguredNetworks()를 통해 현재 사용 가능한 모든 네트워크를 요청할 수도 있습니다. WifiConfigurations 목록이 제공됩니다. 이 예에서
는 또한package com.example;
import java.util.List;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IntentFilter;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class WiFiDemo extends Activity implements OnClickListener {
private static final String TAG = "WiFiDemo";
WifiManager wifi;
BroadcastReceiver receiver;
TextView textStatus;
Button buttonScan;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Setup UI
textStatus = (TextView) findViewById(R.id.textStatus);
buttonScan = (Button) findViewById(R.id.buttonScan);
buttonScan.setOnClickListener(this);
// Setup WiFi
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
// Get WiFi status
WifiInfo info = wifi.getConnectionInfo();
textStatus.append("\n\nWiFi Status: " + info.toString());
// List available networks
List<WifiConfiguration> configs = wifi.getConfiguredNetworks();
for (WifiConfiguration config : configs) {
textStatus.append("\n\n" + config.toString());
}
// Register Broadcast Receiver
if (receiver == null)
receiver = new WiFiScanReceiver(this);
registerReceiver(receiver, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
Log.d(TAG, "onCreate()");
}
@Override
public void onStop() {
unregisterReceiver(receiver);
}
public void onClick(View view) {
Toast.makeText(this, "On Click Clicked. Toast to that!!!",
Toast.LENGTH_LONG).show();
if (view.getId() == R.id.buttonScan) {
Log.d(TAG, "onClick() wifi.startScan()");
wifi.startScan();
}
}
}
WiFiScanReceiver.java
패키지 com.example 새로운 네트워크
WiFiDemo.java 대한 스캔을 수행하는 방송 수신 장치를 등록 ;
import java.util.List;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.util.Log;
import android.widget.Toast;
public class WiFiScanReceiver extends BroadcastReceiver {
private static final String TAG = "WiFiScanReceiver";
WiFiDemo wifiDemo;
public WiFiScanReceiver(WiFiDemo wifiDemo) {
super();
this.wifiDemo = wifiDemo;
}
@Override
public void onReceive(Context c, Intent intent) {
List<ScanResult> results = wifiDemo.wifi.getScanResults();
ScanResult bestSignal = null;
for (ScanResult result : results) {
if (bestSignal == null
|| WifiManager.compareSignalLevel(bestSignal.level, result.level) < 0)
bestSignal = result;
}
String message = String.format("%s networks found. %s is the strongest.",
results.size(), bestSignal.SSID);
Toast.makeText(wifiDemo, message, Toast.LENGTH_LONG).show();
Log.d(TAG, "onReceive() message: " + message);
}
}
이 예제의 레이아웃 파일은 매우 간단합니다. 그것은 하나의 TextView 스크롤 목적으로 ScrollView에 래핑됩니다.
/res/layout/main.xml가 의 AndroidManifest.xml 파일의 경우
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/buttonScan"
android:text="Scan"></Button>
<ScrollView android:id="@+id/ScrollView01"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/textStatus"
android:text="WiFiDemo" />
</ScrollView>
</LinearLayout>
, 단지 무선 랜을 사용하는 권한을 추가해야합니다 :
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
당신이 할 수있는 이 WifiManager를 사용하여. 시스템에서 Wifi 서비스를 가져오고 Wi-Fi가 켜지는지 확인한 다음 켜거나 끄십시오.
private WifiManager wifiManager;
@Override
public void onCreate(Bundle bund) {
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
if(wifiManager.isWifiEnabled()){
wifiManager.setWifiEnabled(false);
}else{
wifiManager.setWifiEnabled(true);
}
}
권한 당신은 와이파이 네트워크의 목록과 특정 와이파이 네트워크를 선택합니다 또한
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
를 추가 할 기억 하는가? 예 의미하는 경우, 그냥 시도해보십시오 [this] (http://stackoverflow.com/q/8818290/940096) – Praveenkumar
내 대답이 도움이된다면 친절하게 대답으로 표시하십시오. – Nimit