我正在尝试在Android的XBMC linux环境中编写一个插件。我可以在XBMC中看到Mac地址。但是我想要获取这个插件的mac地址,但是我不知道怎么做。
mac=uuid.getnode()我已经尝试过类似上面的代码,但在android中运行时只给了我不同的数字。
有人能给点建议吗?
发布于 2014-03-04 01:33:59
您可以使用XBMC InfoLabels
if xbmc.getInfoLabel('Network.MacAddress') != None:
mac_address = xbmc.getInfoLabel('Network.MacAddress')
else:
mac_address = None发布于 2013-02-01 08:10:56
如果你看看the docs
获取48位正整数形式的硬件地址。第一次运行时,它可能会启动一个单独的程序,这可能会相当慢。如果所有获取硬件地址的尝试都失败,我们将按照RFC 4122中的建议,选择一个随机的48位数,并将其第八位设置为1。
第一部分解释了为什么它是“只有数字”。这应该是一个数字。如果你想以某种特殊的十六进制字符串格式,只需格式化它-例如,通过调用hex()。
最后一句话解释了为什么“每次都不一样”。如果您查看the source,在任何非Windows平台上,getnode将尝试_unixdll_getnode,然后是_ifconfig_getnode,然后回退到一个随机数。前者需要在libuuid或libc中使用一个名为uuid_generate_time的函数,而安卓上不存在该函数。后者使用一系列不同的标志运行命令ifconfig并搜索特定字符串,然后返回到arp和lanscan。同样,所有这些在Android上都不起作用。
在Android上没有推荐的获取MAC地址的方法,主要是因为他们不想让你获取。This blog post解释了原因,this SO question (特别是Seka Alekseyev的答案)补充了更多细节。一些应用程序一旦获得MAC地址,就会尝试保留它,并且永远不会再次检查,这解决了一些问题,但不是大多数问题。
有一个Java API可以为每个有意义的服务获取MAC -WiFi、3G、蓝牙等。你可以自己决定哪一个是“那个”MAC,你需要正确的权限(例如,android.permission.ACCESS_WIFI_STATE),可能没有值或无用的值,但你可以用下面的代码获得它:
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String mac = wm.getConnectionInfo().getMacAddress();据我所知,在SL4A或任何其他Android Python发行版中都没有直接公开这些函数的内容,因此您必须编写自己的包装器。
发布于 2013-05-22 12:56:17
你可以通过这种简单的方式获取mac地址,假设"eth0“是你的网络设备名:
o= open('/sys/class/net/eth0/address','r')
mac_address = o.read().strip() #on“ff:ff”表单
https://stackoverflow.com/questions/14636382
复制相似问题