第一步:查看当前所有wifi源:
private String WifiSource() {
//result 返回UNITY的信息
String result="";
try {
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo info = wifiManager.getConnectionInfo();
List list = wifiManager.getScanResults();
//显示当前所有wifi
if (list != null) {
result += "当前所有wifi的数量: " + list.size();
for (ScanResult scanResult : list) {
int nSigLevel = WifiManager.calculateSignalLevel(scanResult.level, 5);
result +=" |Wifi名称:" + scanResult.SSID + " wifi信号强度:" + scanResult.level + "-" + nSigLevel;
}
}else
{
result +=" |list is null";
}
} catch (Exception e)
{
e.printStackTrace();
result +="c错误:"+e;
}
return result;
}
第二查看你当前wifi的情况:
private String ObtainWifiInfo() {
// Wifi的连接速度及信号强度:
String result="";
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo info = wifiManager.getConnectionInfo();
if (info.getBSSID() != null) {
// 链接信号强度
int strength = WifiManager.calculateSignalLevel(info.getRssi(), 5);
// 链接速度
int speed = info.getLinkSpeed();
// 链接速度单位
String units = WifiInfo.LINK_SPEED_UNITS;
// Wifi源名称
String ssid = info.getSSID();
String mac = info.getMacAddress();
result +=" |mac地址:"+mac+" |wifi名称:"+ssid+" |链接信号强度 :"+strength+" |链接速度 :"+speed+units;
}
return result;
}
Unity上的使用方法:
if (GUI.Button(new Rect(10, 790, 140, 40), "获取WIFI全"))
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic("currentActivity");
wifiData = jo.Call("WifiSource");
log.text += wifiData;
}
if (GUI.Button(new Rect(10, 850, 140, 60), "自己wifi"))
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic("currentActivity");
wifiData = jo.Call("ObtainWifiInfo");
log.text += wifiData;
}
xml配置文件需要的权限:
Eclips项目:
package cn.wyq.qp;
import java.io.File;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
private static Context instance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
instance = getApplicationContext();
}
//获取wifi强度 2017年10月16日
private int ObtainWifiInfo()
{
int wifiInfo = 0;
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo info = wifiManager.getConnectionInfo();
try {
if (info.getBSSID() != null)
{
// 链接信号强度
int strength = WifiManager.calculateSignalLevel(info.getRssi(), 5);
wifiInfo = strength;
}
}catch (Exception e)
{
e.printStackTrace();
}
return wifiInfo;
}
//获取手机电量强度 2017年10月16日
public int MonitorBatteryState() {
int level = -1;
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent intent = instance.registerReceiver(null,ifilter);
int rawlevel = intent.getIntExtra("level", 0);//获得当前电量
int scale = intent.getIntExtra("scale", 0);//获得总电量
if (rawlevel > 0 && scale > 0)
{
level = (rawlevel * 100) / scale;
}
else
{
level = -1;
}
return level;
}
}
Unity 项目:
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
public class UICopy : MonoBehaviour {
#region 读取手机电量
//这是Unity本身的api,不过华为手机获取不到电量
//string CapacityString = System.IO.File.ReadAllText("/sys/class/power_supply/battery/capacity");
//一格信号的状态标识
//2格信号的状态标识
//3格信号的状态标识
//4格信号的状态标识
}