Android 获取连接的WIFI 的一些数据(后期封装成aar 包给Unity 调用)

封装成AAR包,获取 Android 7.0 以上的 手机 mac 地址

一、Android 代码

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;import android.text.format.Formatter;import java.net.InetAddress;
import java.net.NetworkInterface;import java.net.SocketException;
import java.util.Enumeration;import static android.content.Context.WIFI_SERVICE;public class WifiMgr {/**获取Mac地址** android 7.0 以上使用*/public static String getMacAddress() {String strMacAddr = null;try {// 获得IpD地址InetAddress ip = getLocalInetAddress();byte[] b = NetworkInterface.getByInetAddress(ip).getHardwareAddress();StringBuffer buffer = new StringBuffer();for (int i = 0; i < b.length; i++) {if (i != 0) {buffer.append(':');}String str = Integer.toHexString(b[i] & 0xFF);buffer.append(str.length() == 1 ? 0 + str : str);}strMacAddr = buffer.toString().toUpperCase();} catch (Exception e) {}return strMacAddr;}/*** 获取移动设备本地IP** @return*/private static InetAddress getLocalInetAddress() {InetAddress ip = null;try {// 列举Enumeration<NetworkInterface> en_netInterface = NetworkInterface.getNetworkInterfaces();while (en_netInterface.hasMoreElements()) {// 是否还有元素NetworkInterface ni = (NetworkInterface) en_netInterface.nextElement();// 得到下一个元素Enumeration<InetAddress> en_ip = ni.getInetAddresses();// 得到一个ip地址的列举while (en_ip.hasMoreElements()) {ip = en_ip.nextElement();if (!ip.isLoopbackAddress()&& ip.getHostAddress().indexOf(":") == -1)break;elseip = null;}if (ip != null) {break;}}} catch (SocketException e) {e.printStackTrace();}return ip;}

二、AndroidMainifest.xml 添加权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.INTERNET"/>

三、Unity 中调用

using UnityEngine;/// <summary>
/// 通过IP,获取机器Mac地址
/// </summary>
public class GetWifiData
{// 安卓的接口文档private AndroidJavaObject _androidJavaObject;public AndroidJavaObject mAndroidJavaObject {get {if (_androidJavaObject != null) {_androidJavaObject = new AndroidJavaObject("com.wifimacforarrow.pacificfuture.wifidataforarrow.WifiMgr");}return _androidJavaObject;}}/// <summary>/// 构造函数/// </summary>public GetWifiData() {_androidJavaObject = new AndroidJavaObject("com.wifimacforarrow.pacificfuture.wifidataforarrow.WifiMgr");}/// <summary>/// 获取设别的 Mac 地址/// </summary>/// <returns></returns>public string GetWifiMac() {#if UNITY_EDITORreturn "00:00:00:00:00:00";
#elsereturn mAndroidJavaObject.CallStatic<string>("getMacAddress");
#endif}
}

=======================================================================================

=======================================================================================

Android Studio  WiFi 之 获取 WiFi 名称、IP、Mac(Android 7.0)

注意添加相关权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;import android.text.format.Formatter;
import android.widget.TextView;import java.net.NetworkInterface;
import java.net.SocketException;public class MainActivity extends AppCompatActivity {private TextView tv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取 textView 组件,把结果显示在UI上tv = findViewById(R.id.tv);tv.setText("ip "+getWifiIp() + " " +getWiFiName()+ " " +getWifiMacAddress());}/** 获取 WIFI 的名称* */public String getWiFiName() {WifiManager wm = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);if (wm != null) {WifiInfo winfo = wm.getConnectionInfo();if (winfo != null) {String s = winfo.getSSID();if (s.length() > 2 && s.charAt(0) == '"' && s.charAt(s.length() - 1) == '"') {return s.substring(1, s.length() - 1);}}}return "Wifi 未获取到";}/** 获取 WiFi 的 IP 地址* */public  String getWifiIp() {Context myContext = getApplicationContext();if (myContext == null) {throw new NullPointerException("上下文 context is null");}WifiManager wifiMgr = (WifiManager) myContext.getSystemService(Context.WIFI_SERVICE);if (isWifiEnabled()) {int ipAsInt = wifiMgr.getConnectionInfo().getIpAddress();String ip = Formatter.formatIpAddress(ipAsInt);if (ipAsInt == 0) {return "未能获取到IP地址";} else {return ip;}} else {return "WiFi 未连接";}}/** 判断当前 WIFI 是否连接* */public  boolean isWifiEnabled() {Context myContext = getApplicationContext();if (myContext == null) {throw new NullPointerException("上下文 context is null");}WifiManager wifiMgr = (WifiManager) myContext.getSystemService(Context.WIFI_SERVICE);if (wifiMgr.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {ConnectivityManager connManager = (ConnectivityManager) myContext.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);return wifiInfo.isConnected();} else {return false;}}/** 获取 WiFi 的 Mac 地址** */public String getWifiMacAddress(){Context myContext = getApplicationContext();if (myContext == null) {throw new NullPointerException("上下文 context is null");}WifiManager wifiMgr = (WifiManager) myContext.getSystemService(Context.WIFI_SERVICE);if (isWifiEnabled()) {// 该接口只能获得 02:00:00:00:00:02//String macAddress = wifiMgr.getConnectionInfo().getMacAddress();String macAddress = null;StringBuffer buf = new StringBuffer();NetworkInterface networkInterface = null;try {networkInterface = NetworkInterface.getByName("eth1");if (networkInterface == null) {networkInterface = NetworkInterface.getByName("wlan0");}if (networkInterface == null) {return "02:00:00:00:00:02";}byte[] addr = networkInterface.getHardwareAddress();for (byte b : addr) {buf.append(String.format("%02X:", b));}if (buf.length() > 0) {buf.deleteCharAt(buf.length() - 1);}macAddress = buf.toString();} catch (SocketException e) {e.printStackTrace();return "02:00:00:00:00:02";}return macAddress;} else {return "WiFi 未连接";}}}

Android Studio WiFi 之 获取 WiFi 名称、IP、Mac相关推荐

  1. bat批处理开发-wifi联网系列(4):连接wifi,获取本机ip、网关及dns,并通过ping对wifi网络的连通性可用性进行检测

    公司wifi很不稳定,编写了个wifi断网后自动重连的批处理,主要包括:可用wifi查询.联网.wifi切换感知.自动检测及掉线重连,网络状态分析等功能. 本次分享第四部分:连接wifi,并对wifi ...

  2. 破解 WiFi,获取 WiFi 密码

    破解 WiFi,获取 WiFi 密码 破解 WiFi,获取 WiFi 密码 手动指令破解篇 1.查看自己的无线网卡名称 2.开启网卡监听模式 3.搜索周围wifi网络 4.抓取握手包 5.干扰连接设备 ...

  3. Android Studio 基础 之 获取系统Calendar 日历日程(可获得当天以后可设定天数范围内的日历日程) (涉及指定日期时间判断是星期几的方法使用)的方法整理

    Android Studio 基础 之 获取系统Calendar 日历日程(可获得当天以后可设定天数范围内的日历日程) (涉及指定日期时间判断是星期几的方法使用)的方法整理 目录 Android St ...

  4. java ip地址类,实现获取主机名称,IP地址的类 (java)

    /** *实现获取主机名称,IP地址的类. * Copyright (C) ☆苹果工作室☆ */ package com.applestudio.util; import java.net.*; pu ...

  5. Android Studio 基础 之 获取蓝牙Bluetooth 的状态,设置的蓝牙Bluetooth 的开关状态,并监听蓝牙Bluetooth 的状态变化方法整理

    Android Studio 基础 之 获取蓝牙Bluetooth 的状态,设置的蓝牙Bluetooth 的开关状态,并监听蓝牙Bluetooth 的状态变化方法整理 目录 Android Studi ...

  6. 日历 android 周历,Android Studio 基础 之 获取系统Calendar 日历日程 (涉及指定日期时间判断是星期几的方法使用)的方法整理...

    Android Studio 基础 之 获取系统Calendar 日历日程 (涉及指定日期时间判断是星期几的方法使用)的方法整理 目录 Android Studio 基础 之 获取系统Calendar ...

  7. Android Studio App 图标更改 以及名称更改

    Android Studio App 图标更改 以及名称更改 Android Gradle Build Error:Some file crunching failed, see logs for d ...

  8. android studio shell 命令行自动打包(mac 平台)

    android studio shell 命令行自动打包(mac 平台) 作者 CrazySongHang 关注 2015.04.10 22:56* 字数 494 阅读 4165评论 1喜欢 2 如果 ...

  9. Android学习笔记之——获取WIFI的RSSI以及名称

    本博文为本人学习Android开发以来第一次实例编写.点击一个按钮,获取当前的wifi名称以及接受的信号强度. 目录 代码 定义界面 mainactivity 需要的权限 效果 参考资料 代码 首先创 ...

最新文章

  1. 网站不同优化不同时期,如何更“因时制宜”?
  2. 搭建JMeter+Jenkins+Ant持续化
  3. 中国大学MOOC 计算机组成原理第5章 测试(上)
  4. nacos客户端获取配置
  5. Android之内核学习笔记
  6. 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求
  7. mysql 排他,mysql 共享锁 排他锁 防插入锁
  8. 二进制指数类型退避算法
  9. html cdn不缓存,【前端开发日常 - 6】七牛CDN上的网页缓存问题及HTML禁止缓存(续)...
  10. 语音识别免费的api
  11. 把图片隐藏起来的html代码,教你把图片、文档、影片等隐藏起来
  12. 正高职称 程序员_我985毕业33岁正高,职称评审哪里难?轻轻松松过职称
  13. 南京大学计算机学院杨老师,南京大学计算机系名师风采_跨考网
  14. 使用tensorflow神经网络预测房价模型
  15. java datasource 详解_Spring的datasource配置详解
  16. openwrt利用arp获取局域网设备IP
  17. android u盘怎么打开文件夹图标不显示不出来了,如何解决U盘图标不显示但资源管理器中还能看到U盘...
  18. mac 和 windows excel 格内换行
  19. 十位改变世界的人工智能领域大师
  20. 美团点评武汉场后台开发

热门文章

  1. 简单总结协程Coroutine及Yield常见用法
  2. IP地址这么重要的知识,居然听一个学弟说没用?
  3. 怎么调整图片的尺寸大小?
  4. poj-openjudge 1042:Moles 解题报告
  5. Downloads Help 下载帮助
  6. 项目落地 - 智慧海绵城市(物联网技术应用)
  7. 智能汽车操作系统行业研究及十四五规划分析报告
  8. 软件设计师冲刺:临考快速记忆
  9. 工单管理解决方案 | 可高度扩展,可量身定制,助力无纸化流程办公
  10. 蓝桥杯:调和级数————Python