摘要:在開發(fā)過程中,有時(shí)我們需要獲取系統(tǒng)的一些硬件信息。在這里,介紹一些硬件信息的獲取方法,其中包括是指設(shè)備的藍(lán)牙地址。
??在開發(fā)過程中,有時(shí)我們需要獲取系統(tǒng)的一些硬件信息。在這里,介紹一些硬件信息的獲取方法,其中包括BT mac, BLE mac,WIFI mac, WIFI DIRECT mac.
BT mac
??BT mac是指設(shè)備的藍(lán)牙地址。獲取方法如下:
BluetoothManager btManager = (BluetoothManager) getContext().getSystemService(Context.BLUETOOTH_SERVICE);BluetoothAdapter btAdapter = btManager.getAdapter();String btMac;//在6.0版本以后,獲取硬件ID變得更加嚴(yán)格,所以通過設(shè)備的地址映射得到mac地址if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {??btMac = android.provider.Settings.Secure.getString(getContext.getContentResolver(), "bluetooth_address");}else {??btMac = btAdapter.getAddress();}
private String getBluetoothMacAddress() { BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); String bluetoothMacAddress = ""; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){ try { Field mServiceField = bluetoothAdapter.getClass().getDeclaredField("mService"); mServiceField.setAccessible(true); Object btManagerService = mServiceField.get(bluetoothAdapter); if (btManagerService != null) { bluetoothMacAddress = (String) btManagerService.getClass().getMethod("getAddress").invoke(btManagerService); } } catch (NoSuchFieldException e) { } catch (NoSuchMethodException e) { } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { } } else { bluetoothMacAddress = bluetoothAdapter.getAddress(); } return bluetoothMacAddress; }
BLE mac
??BLE mac是指設(shè)備的藍(lán)牙低能耗模塊的地址,一般來說,其值和BT mac相等。
WIFI mac
??WIFI mac是指設(shè)備進(jìn)行wifi連接時(shí)的地址,獲取方法如下:
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); String wifiMac = wifiInfo.getMacAddress();
WIFI DIRECT mac
??WIFI DIRECT mac是指設(shè)備進(jìn)行wifi直連時(shí)自身的地址,獲取方法如下(由于android自身的api目前還沒有直接獲取的方法,所以使用java的api進(jìn)行獲取):
public String getWFDMacAddress(){ try { Listinterfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface ntwInterface : interfaces) { if (ntwInterface.getName().equalsIgnoreCase("p2p0")) { byte[] byteMac = ntwInterface.getHardwareAddress(); if (byteMac==null){ return null; } StringBuilder strBuilder = new StringBuilder(); for (int i=0; i 0){ strBuilder.deleteCharAt(strBuilder.length()-1); } return strBuilder.toString(); } } } catch (Exception e) { Log.d(TAG, e.getMessage()); } return null; }
參考:
How do you retrieve the WiFi Direct MAC address?--stackoverflow
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/66832.html
摘要:在本文中,我們將帶大家進(jìn)一步了解的搭建與運(yùn)行。操作系統(tǒng)或更高版本磁盤空間工具依賴或更新的版本和命令行工具這些命令行工具。運(yùn)行應(yīng)用程序定位到工具欄在中選擇一個(gè)運(yùn)行該應(yīng)用的設(shè)備。 作者:個(gè)推iOS開發(fā)工程師 伊澤瑞爾 Flutter是Google推出的跨平臺(tái)的解決方案,用以幫助開發(fā)者在 Android 和 iOS 兩個(gè)平臺(tái)開發(fā)高質(zhì)量原生應(yīng)用的全新移動(dòng) UI 框架。 之前我們?yōu)榇蠹医榻B了《跨...
摘要:在本文中,我們將帶大家進(jìn)一步了解的搭建與運(yùn)行。操作系統(tǒng)或更高版本磁盤空間工具依賴或更新的版本和命令行工具這些命令行工具。運(yùn)行應(yīng)用程序定位到工具欄在中選擇一個(gè)運(yùn)行該應(yīng)用的設(shè)備。 作者:個(gè)推iOS開發(fā)工程師 伊澤瑞爾 Flutter是Google推出的跨平臺(tái)的解決方案,用以幫助開發(fā)者在 Android 和 iOS 兩個(gè)平臺(tái)開發(fā)高質(zhì)量原生應(yīng)用的全新移動(dòng) UI 框架。 之前我們?yōu)榇蠹医榻B了《跨...
摘要:在本文中,我們將帶大家進(jìn)一步了解的搭建與運(yùn)行。操作系統(tǒng)或更高版本磁盤空間工具依賴或更新的版本和命令行工具這些命令行工具。運(yùn)行應(yīng)用程序定位到工具欄在中選擇一個(gè)運(yùn)行該應(yīng)用的設(shè)備。作者:個(gè)推iOS開發(fā)工程師 伊澤瑞爾Flutter是Google推出的跨平臺(tái)的解決方案,用以幫助開發(fā)者在 Android 和 iOS 兩個(gè)平臺(tái)開發(fā)高質(zhì)量原生應(yīng)用的全新移動(dòng) UI 框架。 之前我們?yōu)榇蠹医榻B了《跨平臺(tái)框架F...
閱讀 2312·2021-11-15 11:38
閱讀 2440·2021-11-15 11:37
閱讀 2543·2021-08-24 10:00
閱讀 2901·2019-08-30 15:56
閱讀 1260·2019-08-30 15:53
閱讀 3695·2019-08-29 18:43
閱讀 2931·2019-08-29 17:01
閱讀 3255·2019-08-29 16:25