通过安卓应用获取任意蓝牙设备的MAC地址

最近做一个安卓应用,用蓝牙信号控制一台仪器,通过一个蓝牙转串口的装置,发送蓝牙信号,然后转换为串口命令发送给仪器。蓝牙装置如下:

在写安卓应用中的java代码时,如何获取这个蓝牙设备呢?BluetoothAdapter 的 getRemoteDevice(address) 方法可以通过MAC地址来获取蓝牙设备:

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);

但问题来了,这个蓝牙设备的MAC地址是多少呢?

对于手机,可以在状态消息模块中查看本机的蓝牙地址:

不过,这个用于蓝牙转串口的装置,想要知道它的MAC地址可没这么容易,那怎么办呢?

偶然发现,安卓的蓝牙模块中,有个功能可以获取保存过的蓝牙设备,如果先把这个蓝牙转串口的装置和手机进行配对并保存,那是不是就可以从保存列表中把它取出从而得到MAC地址呢?

于是,首先用手机蓝牙和这个设备进行匹配,它的名字是BC04-B:

然后,在java代码中:

//获取已经保存过的设备信息
Set<BluetoothDevice> devices = mBluetoothAdapter.getBondedDevices();
if (devices.size()>0) {
    for(Iterator<BluetoothDevice> iterator=devices.iterator();iterator.hasNext();){
          BluetoothDevice bluetoothDevice=(BluetoothDevice)iterator.next();
          System.out.println("设备:"+bluetoothDevice.getName() + " " + bluetoothDevice.getAddress());
    }
}  

果然,LogCat 中就打印出了保存过的蓝牙设备列表已经它们各自的MAC地址:

时间: 2024-11-03 05:23:05

通过安卓应用获取任意蓝牙设备的MAC地址的相关文章

如何使用Java代码获取Android移动终端Mac地址

快下班了,现在总结一下如何使用Java代码获取Android移动终端Mac地址: 通过设备开通WiFi连接获取Mac地址是最可取的,代码如下: /** * 设备开通WiFi连接,通过wifiManager获取Mac地址 * * @author 高焕杰 */ public static String getMacFromWifi(Context context){ ConnectivityManager connectivityManager = (ConnectivityManager) con

C#获取局域网IP、MAC地址和端口的初学

首先非常感谢Melou的http://www.cnblogs.com/luoht/archive/2009/12/18/1627431.html的随笔,对于初学C#的我,参考你的随笔对我的学习真是有莫大帮助. C#遍历局域网的几种方法: 1.微软社区上介绍了使用Active Directory 来遍历局域网 首先我们来了解DirectoryEntry类是一个什么类. 命名空间:  System.DirectoryServices程序集:  System.DirectoryServices(在 S

java获取当前计算机网卡MAC地址

package com.yjm.testmac; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Enumeration; public class MacTest { public static void main(String[] args)

linux 下C实现获取网卡IP和MAC地址

本文使用getifaddrs 函数获取网卡的IP和MAC地址.getifaddrs函数有个特点,就是获取地址时以链表方式返回,且每个链表节点要么是IP,要么是MAC,所以如果要将网卡的IP和MAC地址同时返回的话,需要对对返回链表进行查找和重新组合.本文实现目的,在于以网卡名方式返回IP和MAC地址.代码如下: #ifndef _MYLIB_H #define _MYLIB_H #include <stdlib.h> #include <errno.h>   #define err

java获取硬盘ID以及MAC地址

http://blog.csdn.net/coolwzjcool/article/details/6698327 为了达到软件注册,或者说软件和电脑绑定的目的,需要将电脑上的固定编号进行一系列的算法计算,并生成唯一和软件匹配的号码. 那么使用java如何达到这个目的呢? 通常做法都是通过java的Runtime来完成,通过 process的输入流,进行获取相关的信息. 下面列举具体的例子: 1.DiskUtils 获取硬盘编号 import java.io.File; import java.i

java 获取访问者ip和mac地址

获取访问者ip,代码: <% String sip=""; try{ sip = (String)request.getRemoteAddr(); }catch(Exception e){ } %> 获取访问者mac地址,法是用UDP协议来发送查询mac指令然后返回值中解析mac.代码 <% String smac = ""; String sip = request.getHeader("x-forwarded-for");

关于获取android6.0的mac地址

原文:http://blog.csdn.net/suziluo123/article/details/51382410 最近接触6.0,发现使用单纯的wifiManager.getConnectionInfo().getMacAddress();方法获取不到MAc地址.后来Google一下发现 Google对硬件信息的访问,其管控更加严格.SD 卡的读写,除了权限声明之外,还应该动态请求,否则就会被禁止.至于 MAC 网络地址的获取,相应的 API 返回的最新结果都是 02:00:00:00:0

获取局域网里一个MAC地址对于的IP地址

通过局域网MAC地址得到IP地址 [[email protected] cli]# cat tmp.sh function get_all_arp_info(){ip -s -s neigh flush all > /dev/nul &for ip in `seq 2 254`doping 192.168.50.$ip -c1 > /dev/null & done}function from_mac_get_ip(){get_all_arp_infoMAC_ADDR=$1if 

用函数SendARP()获取局域网计算机的MAC地址

sendARP 31 说明对方没有开机,我们的函数检测不到它, 1784 说明的给函数的最后一个参数的值是0,或你的给的值与你给的缓存区大小不符合. 如果返回31不在线,则最后一个参数指针指向的值赋值为0 该函数有一个缺点: 该函数本质上就是向目标主机发送一个ARP请求包,然后得到应答包来更新MAC,但是ARP请求包里的发送端IP和MAC是本机的实际IP和MAC,这样对方arp -a查看缓存表时记录里就有我的IP-MAC映射记录,容易知道有人在扫描其机器,或者是ARP病毒也可能. 解决该函数问题