Android 中获取机顶盒的 mac 地址
Posted 邹奇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 中获取机顶盒的 mac 地址相关的知识,希望对你有一定的参考价值。
文章目录
背景
- 分享实用的功能。
思路
一般来说,机顶盒的 mac 地址一般可以在文件系统中的两个地方查看,路径是:
/sys/class/net/eth0/address
/sys/class/net/wlan0/address
一般逻辑是先取 etho/address
文件中的 mac,如果获取不到再去取 wlan0/address
文件中的 mac
演示
机顶盒的 mac 地址信息页,如下图示:
可以看到 mac 地址是 04:3c:e8:95:06:24
- 我们通过 adb 命令进入到机顶盒的 linux 系统中,通过 cat 命令查看两个文件中的值,来验证下判断逻辑是否正确。如下:
adb shell
$ cat /sys/class/net/eth0/address
$ cat /sys/class/net/wlan0/address
根据上面的两个命令和图示,可以看到我们一开始的获取 mac 地址的逻辑是正确的。下面来看下实现。
代码实现
/**
* 获取mac地址,首先获取有线mac,没有则获取无线mac
* @param needColon 是否需要带上冒号
* true 需要携带冒号 - 11:22:33:44:55:66
* false 不需要携带冒号 - 112233445566
*/
public static String getMac(boolean needColon)
String stbMac = getSTBMac(needColon);
if (null != stbMac)
return stbMac;
else
return getWifiMac(needColon);
/**
* Get the STB MacAddress
* @param needColon
*/
public static String getSTBMac(boolean needColon)
try
String filePath = "/sys/class/net/eth0/address";
StringBuffer sb = new StringBuffer(100);
BufferedReader br = new BufferedReader(new FileReader(filePath));
char[] buf = new char[1024];
int len = 0;
while ((len = br.read(buf)) != -1)
String readData = String.valueOf(buf, 0, len);
sb.append(readData);
br.close();
if (needColon)
return sb.toString().trim();
return sb.toString().trim().replace(":", "");
catch (IOException e)
e.printStackTrace();
return null;
/**
* Get the wifi MacAddress
* @param needColon
*/
public static String getWifiMac(boolean needColon)
try
Process p = Runtime.getRuntime().exec("cat /sys/class/net/wlan0/address ");
InputStreamReader isr = new InputStreamReader(p.getInputStream());
LineNumberReader input = new LineNumberReader(isr);
String str = "";
for (; null != str; )
str = input.readLine();
if (str != null)
if (needColon)
return str.trim();
return str.trim().replace(":", "");
input.close();
return null;
catch (IOException e)
e.printStackTrace();
return null;
mac 的值使用也可以不需要冒号,所以同学们自己根据业务需要确定即可。
技术永不眠!我们下期见!
以上是关于Android 中获取机顶盒的 mac 地址的主要内容,如果未能解决你的问题,请参考以下文章