Android TV开发中有的机器会接有线网,需要获取Mac地址,下面是我测试的两种Mac地址的获取方式。

1.一共两个方法,目前第二个方法获取的不准,最后一位数取的不对。private String getMacAddress(){String strMacAddr = null;try {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) {// TODO Auto-generated catch blocke.printStackTrace();}AvcLog.printd("yttest", "strMacAddr:" + strMacAddr);String mac = getMac();AvcLog.printd("yttest" ,"mac:"+mac);return strMacAddr;}/** * 获取移动设备本地IP * @return */protected static InetAddress getLocalInetAddress() {InetAddress ip = null;try {//列举Enumeration en_netInterface = NetworkInterface.getNetworkInterfaces();while (en_netInterface.hasMoreElements()) {//是否还有元素NetworkInterface ni = (NetworkInterface) en_netInterface.nextElement();//得到下一个元素Enumeration en_ip = ni.getInetAddresses();//得到一个ip地址的列举while (en_ip.hasMoreElements()) {ip = (InetAddress) en_ip.nextElement();if (!ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1)break;elseip = null;}if (ip != null) {break;}}} catch (SocketException e) {e.printStackTrace();}return ip;}2.第二种方法//获取当前连接网络的网卡的mac地址private static String parseByte(byte b) {String s = "00" + Integer.toHexString(b)+":";return s.substring(s.length() - 3);}/** * 获取当前系统连接网络的网卡的mac地址 * @return */@SuppressLint("NewApi")public static final String getMac() {byte[] mac = null;StringBuffer sb = new StringBuffer();try {Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();while (netInterfaces.hasMoreElements()) {NetworkInterface ni = netInterfaces.nextElement();Enumeration address = ni.getInetAddresses();while (address.hasMoreElements()) {InetAddress ip = address.nextElement();if (ip.isAnyLocalAddress() || !(ip instanceof Inet4Address) || ip.isLoopbackAddress())continue;if (ip.isSiteLocalAddress())mac = ni.getHardwareAddress();else if (!ip.isLinkLocalAddress()) {mac = ni.getHardwareAddress();break;}}}} catch (SocketException e) {e.printStackTrace();}if(mac != null){for(int i=0 ;i

我的机器测试结果,进入adb shell ifconfig 查看系统数据,第一种方法获取的Mac地址较为准确。

更多相关文章

  1. SurfaceComposerClient与SurfaceFlinger建立通信流程
  2. php脚本生成google play url的下载链接,下载apk并自动反编译后获
  3. Android(安卓)Studio中的手机通讯录开发
  4. android studio 获取SHA1(指纹)
  5. uiautomator快速获取android画面UI元素
  6. Android学习笔记:获取相册和摄像机图片在APP显示Demo
  7. Android(安卓)中Crash时如何获取异常信息详解及实例
  8. Android—启动内置APK和动态发送接收自定义广播
  9. android手机定位

随机推荐

  1. Android的安全体系
  2. Android 软键盘
  3. Android Display System --- Surface Fli
  4. android MediaPlayer详解
  5. Android基础UI篇------TextView及其子类
  6. [整理]学习Android的博客和网站
  7. android 谷歌地图开发
  8. Android基础知识之Manifest文件的组织结
  9. android手机屏幕适配方法
  10. Android 五种布局简单介绍