android手机wifi热点通信
来源:互联网 发布:网络优化每天做什么 编辑:程序博客网 时间:2024/04/30 03:44
import java.io.BufferedReader;
import java.io.FileReader;
import java.lang.reflect.*;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
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;
public class AdHocActivity extends Activity {
private final String TAG = "WifiSoftAP";
public static final String WIFI_AP_STATE_CHANGED_ACTION =
"android.net.wifi.WIFI_AP_STATE_CHANGED";
public static final int WIFI_AP_STATE_DISABLING = 0;
public static final int WIFI_AP_STATE_DISABLED = 1;
public static final int WIFI_AP_STATE_ENABLING = 2;
public static final int WIFI_AP_STATE_ENABLED = 3;
public static final int WIFI_AP_STATE_FAILED = 4;
TextView result;
WifiManager wifiManager;
WifiReceiver receiverWifi;
List<ScanResult> wifiList;
private List<WifiConfiguration> wifiConfiguration;
StringBuilder resultList = new StringBuilder();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
result = (TextView) findViewById(R.id.result);
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
Button btnOpenAP = (Button)this.findViewById(R.id.btnOpenAP);
btnOpenAP.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (!isApEnabled()){
setWifiApEnabled(true);
}
}
});
Button btnCloseAP = (Button)this.findViewById(R.id.btnCloseAP);
btnCloseAP.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (isApEnabled()){
setWifiApEnabled(false);
}
}
});
Button btnScan = (Button)this.findViewById(R.id.btnScan);
btnScan.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (!wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
}
StartScan();
}
});
Button btnConnectAP = (Button)this.findViewById(R.id.btnConnectAP);
btnConnectAP.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
connectAP();
}
});
Button btnGetConnectedIP = (Button)this.findViewById(R.id.btnGetConnectedIP);
btnGetConnectedIP.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
ArrayList<String> connectedIP = getConnectedIP();
resultList = new StringBuilder();
for(String ip : connectedIP){
resultList.append(ip);
resultList.append("\n");
}
result.setText(resultList);
}
});
}
protected void onPause() {
if (receiverWifi != null)
unregisterReceiver(receiverWifi);
super.onPause();
}
protected void onResume() {
if (receiverWifi != null)
registerReceiver(receiverWifi, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
public void StartScan() {
wifiManager.setWifiEnabled(true);
receiverWifi = new WifiReceiver();
registerReceiver(receiverWifi, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifiManager.startScan();
result.setText("\nScaning...\n");
}
public boolean setWifiApEnabled(boolean enabled) {
if (enabled) { // disable WiFi in any case
wifiManager.setWifiEnabled(false);
}
try {
WifiConfiguration apConfig = new WifiConfiguration();
apConfig.SSID = "GossipDog";
apConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
apConfig.preSharedKey = "abcdefgh";
Method method = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);
return (Boolean) method.invoke(wifiManager, apConfig, enabled);
} catch (Exception e) {
Log.e(TAG, "Cannot set WiFi AP state", e);
return false;
}
}
public int getWifiApState() {
try {
Method method = wifiManager.getClass().getMethod("getWifiApState");
return (Integer) method.invoke(wifiManager);
} catch (Exception e) {
Log.e(TAG, "Cannot get WiFi AP state", e);
return WIFI_AP_STATE_FAILED;
}
}
public boolean isApEnabled() {
int state = getWifiApState();
return WIFI_AP_STATE_ENABLING == state || WIFI_AP_STATE_ENABLED == state;
}
public void connectAP() {
WifiConfiguration gossipDog = new WifiConfiguration();
for (WifiConfiguration ap : wifiConfiguration) {
if (ap.SSID == "GossipDog") {
gossipDog = ap;
}
}
if (gossipDog != null) {
gossipDog.preSharedKey = "abcdefgh";
gossipDog.networkId = wifiManager.addNetwork(gossipDog);
wifiManager.enableNetwork(gossipDog.networkId, true);
result.setText("连接");
}
}
private ArrayList<String> getConnectedIP() {
ArrayList<String> connectedIP = new ArrayList<String>();
try {
BufferedReader br = new BufferedReader(new FileReader("/proc/net/arp"));
String line;
while ((line = br.readLine()) != null) {
String[] splitted = line.split(" +");
if (splitted != null && splitted.length >= 4) {
String ip = splitted[0];
connectedIP.add(ip);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return connectedIP;
}
class WifiReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
resultList = new StringBuilder();
wifiList = wifiManager.getScanResults();
for (int i = 0; i < wifiList.size(); i++) {
resultList.append(new Integer(i + 1).toString() + ".");
resultList.append((wifiList.get(i)).toString());
resultList.append("\n\n");
}
result.setText(resultList);
wifiConfiguration = wifiManager.getConfiguredNetworks();
}
}
<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:id="@+id/btnOpenAP"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="开启AP"
/>
<Button
android:id="@+id/btnCloseAP"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="关闭AP"
/>
<Button
android:id="@+id/btnScan"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="扫描网络"
/>
<Button
android:id="@+id/btnConnectAP"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="配对"
/>
<Button
android:id="@+id/btnGetConnectedIP"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="查看已连接设备IP"
/>
<TextView
android:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:gravity="center"
/>
</LinearLayout>
import java.io.FileReader;
import java.lang.reflect.*;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
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;
public class AdHocActivity extends Activity {
private final String TAG = "WifiSoftAP";
public static final String WIFI_AP_STATE_CHANGED_ACTION =
"android.net.wifi.WIFI_AP_STATE_CHANGED";
public static final int WIFI_AP_STATE_DISABLING = 0;
public static final int WIFI_AP_STATE_DISABLED = 1;
public static final int WIFI_AP_STATE_ENABLING = 2;
public static final int WIFI_AP_STATE_ENABLED = 3;
public static final int WIFI_AP_STATE_FAILED = 4;
TextView result;
WifiManager wifiManager;
WifiReceiver receiverWifi;
List<ScanResult> wifiList;
private List<WifiConfiguration> wifiConfiguration;
StringBuilder resultList = new StringBuilder();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
result = (TextView) findViewById(R.id.result);
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
Button btnOpenAP = (Button)this.findViewById(R.id.btnOpenAP);
btnOpenAP.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (!isApEnabled()){
setWifiApEnabled(true);
}
}
});
Button btnCloseAP = (Button)this.findViewById(R.id.btnCloseAP);
btnCloseAP.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (isApEnabled()){
setWifiApEnabled(false);
}
}
});
Button btnScan = (Button)this.findViewById(R.id.btnScan);
btnScan.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (!wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
}
StartScan();
}
});
Button btnConnectAP = (Button)this.findViewById(R.id.btnConnectAP);
btnConnectAP.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
connectAP();
}
});
Button btnGetConnectedIP = (Button)this.findViewById(R.id.btnGetConnectedIP);
btnGetConnectedIP.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
ArrayList<String> connectedIP = getConnectedIP();
resultList = new StringBuilder();
for(String ip : connectedIP){
resultList.append(ip);
resultList.append("\n");
}
result.setText(resultList);
}
});
}
protected void onPause() {
if (receiverWifi != null)
unregisterReceiver(receiverWifi);
super.onPause();
}
protected void onResume() {
if (receiverWifi != null)
registerReceiver(receiverWifi, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
public void StartScan() {
wifiManager.setWifiEnabled(true);
receiverWifi = new WifiReceiver();
registerReceiver(receiverWifi, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifiManager.startScan();
result.setText("\nScaning...\n");
}
public boolean setWifiApEnabled(boolean enabled) {
if (enabled) { // disable WiFi in any case
wifiManager.setWifiEnabled(false);
}
try {
WifiConfiguration apConfig = new WifiConfiguration();
apConfig.SSID = "GossipDog";
apConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
apConfig.preSharedKey = "abcdefgh";
Method method = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);
return (Boolean) method.invoke(wifiManager, apConfig, enabled);
} catch (Exception e) {
Log.e(TAG, "Cannot set WiFi AP state", e);
return false;
}
}
public int getWifiApState() {
try {
Method method = wifiManager.getClass().getMethod("getWifiApState");
return (Integer) method.invoke(wifiManager);
} catch (Exception e) {
Log.e(TAG, "Cannot get WiFi AP state", e);
return WIFI_AP_STATE_FAILED;
}
}
public boolean isApEnabled() {
int state = getWifiApState();
return WIFI_AP_STATE_ENABLING == state || WIFI_AP_STATE_ENABLED == state;
}
public void connectAP() {
WifiConfiguration gossipDog = new WifiConfiguration();
for (WifiConfiguration ap : wifiConfiguration) {
if (ap.SSID == "GossipDog") {
gossipDog = ap;
}
}
if (gossipDog != null) {
gossipDog.preSharedKey = "abcdefgh";
gossipDog.networkId = wifiManager.addNetwork(gossipDog);
wifiManager.enableNetwork(gossipDog.networkId, true);
result.setText("连接");
}
}
private ArrayList<String> getConnectedIP() {
ArrayList<String> connectedIP = new ArrayList<String>();
try {
BufferedReader br = new BufferedReader(new FileReader("/proc/net/arp"));
String line;
while ((line = br.readLine()) != null) {
String[] splitted = line.split(" +");
if (splitted != null && splitted.length >= 4) {
String ip = splitted[0];
connectedIP.add(ip);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return connectedIP;
}
class WifiReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
resultList = new StringBuilder();
wifiList = wifiManager.getScanResults();
for (int i = 0; i < wifiList.size(); i++) {
resultList.append(new Integer(i + 1).toString() + ".");
resultList.append((wifiList.get(i)).toString());
resultList.append("\n\n");
}
result.setText(resultList);
wifiConfiguration = wifiManager.getConfiguredNetworks();
}
}
}
下面是xml文件
<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:id="@+id/btnOpenAP"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="开启AP"
/>
<Button
android:id="@+id/btnCloseAP"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="关闭AP"
/>
<Button
android:id="@+id/btnScan"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="扫描网络"
/>
<Button
android:id="@+id/btnConnectAP"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="配对"
/>
<Button
android:id="@+id/btnGetConnectedIP"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="查看已连接设备IP"
/>
<TextView
android:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:gravity="center"
/>
</LinearLayout>
- android手机wifi热点通信
- android 热点开发、WiFi热点通信
- android开启手机wifi热点和连接到wifi热点
- android通过手机热点通信
- 开启android手机的wifi热点
- 开启android手机的wifi热点 .
- 开启android手机的wifi热点
- 打开android手机的wifi热点
- Ubuntu 创建android手机能够连接的Wifi热点
- Ubuntu建立wifi热点(支持Android手机)
- android 通过wifi 热点实现手机摄像头数据共享
- Android移动开发:WIFI热点通信(一)
- 手机共享笔记本wifi热点
- android手机之间用wifi direct通信
- android Wifi热点
- Android WIFI热点应用
- Android-wifi热点开关
- Android网络相关(WiFi的开关,WiFi热点的开关,获取手机IP地址等)
- vandermonde 行列式两种证明方式
- the Geodatabase editor license has expired
- Java.io.FilenameFilter文件名过滤接口的使用。
- Struts2学习总结
- 已解决: 什么是稀疏数组(Sparse array)?
- android手机wifi热点通信
- 如何学习SEO白帽
- Drupal7模組介紹-Views-part5(呈现方式)
- XML(可扩展标记语言)
- 六,软件测试
- 学习计划
- 32bit / 64bit 服务器上软件安装注意事项
- 解决java写入Access乱码问题
- 数据结构--查找&&排序(快速复习)