Ⅰ android 藍牙信號強度值怎麼轉換成距離
30、查詢藍牙設備
指令 響應 參數
Param1:藍牙地址
Param2:設備類 AT+INQ +INQ: <Param1>,<Param2>,<Param3>,
OK
Param3:RSSI 信號強度
舉例說明 1:
at+init\r\n ——初始化 SPP庫(不能重復初始化) OK
at+iac=9e8b33\r\n——查詢任意訪問碼的藍牙設備 OK
at+class=0\r\n ——查詢各種藍牙設備類
at+inqm=1,9,48\r\n——查詢模式:帶 RSSI信號強度指示,超過 9個藍牙設備響應則終止查詢,設定超 時
為 48x1.28=61.44秒。
At+inq\r\n ——查詢周邊藍牙設備
+INQ:2:72:D2224,3E0104,FFBC
+INQ:1234:56:0,1F1F,FFC1
+INQ:1234:56:0,1F1F,FFC0
+INQ:1234:56:0,1F1F,FFC1
+INQ:2:72:D2224,3F0104,FFAD
+INQ:1234:56:0,1F1F,FFBE
+INQ:1234:56:0,1F1F,FFC2
+INQ:1234:56:0,1F1F,FFBE
+INQ:2:72:D2224,3F0104,FFBC OK
Ⅱ 藍牙設備之間可以測距離嗎
應該是可以的,但不會有太大的市場吧?現在測距的工具很多的.
第一,不管怎麼說,藍牙都是一種電磁波的,所以可以使用電磁波原理測距.但絕不會根據信號的強弱的,因為這個受影響較大,比如快沒有電時有電足時絕對不同的.
第二,可以使用相位測距,但成本過高.
第一種的原理是,發射位置與接收位置的距離,可以中間有一個鏡子進行反射的.根據發射時間與接收時間進行測距,當然,這種方法用不到電腦上的.且誤差是+/-1M左右.按時間與傳播的速度得出的.
第二種原理,可以讓藍牙同時發身不同波長的波,接收後可以得到相應的處理,因為是同時發射擊,而不同波在接收後查看其查關的相位.然後進行一些復雜的計算,如果其兩個波長又時相位重合,則這個距離一定是波長最小公倍數的整數倍.若是發送10個不同波長的波時,你想十個最小公倍數進行計算可能會達到多少呢?要是更多呢?這往往是激光測距儀的原理的,這樣更精確.精度可以達到最短波長的(原理上).但距離是藍牙的傳輸限制,只可能是200M以內,差有怕是20M都沒有的!
Ⅲ Android怎麼檢測藍牙的連接狀態如果一段斷開,我這邊怎麼檢測得到
按照藍牙規范,一旦超時連接斷開,會返回上層Disconnect complete Event with reason code: supervision timeout.可以根據該原因碼,檢測連接狀態,具體方法為:
1、BluetoothAdapter 顧名思義,藍牙適配器,直到建立bluetoothSocket連接之前,都要不斷操作它BluetoothAdapter里的方法很多,常用的有以下幾個:cancelDiscovery() 根據字面意思,是取消發現,也就是說當正在搜索設備的時候調用這個方法將不再繼續搜索disable()關閉藍牙enable()打開藍牙,這個方法打開藍牙不會彈出提示,更多的時候需要問下用戶是否打開,一下這兩行代碼同樣是打開藍牙,不過會提示用戶:Intemtenabler=newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enabler,reCode);//同startActivity(enabler);
getAddress()獲取本地藍牙地址getDefaultAdapter()獲取默認BluetoothAdapter,實際上,也只有這一種方法獲取BluetoothAdaptergetName()獲取本地藍牙名稱。
2、getRemoteDevice(String address)根據藍牙地址獲取遠程藍牙設備getState()獲取本地藍牙適配器當前狀態(感覺可能調試的時候更需要)isDiscovering()判斷當前是否正在查找設備,是返回true***isEnabled()判斷藍牙是否打開,已打開返回true,否則,返回false***(String name,UUID uuid)根據名稱,UUID創建並返回BluetoothServerSocket,這是創建BluetoothSocket伺服器端的第一步startDiscovery()開始搜索,這是搜索的第一步2.BluetoothDevice看名字就知道,這個類描述了一個藍牙設備(UUIDuuid)根據UUID創建並返回一個BluetoothSocket這個方法也是我們獲取BluetoothDevice的目的——創建BluetoothSocket
這個類其他的方法,如getAddress(),getName(),同BluetoothAdapter。
Ⅳ android如何用藍牙GPS
該軟體可以使用,第一次啟動慢一些,Google
地圖,一些GPS測試軟體也可以調用外部GPS數據,但凱立德偵查不到外部GPS的數據
Ⅳ 什麼是android 藍牙
andriod是智能手機的操作系統,藍牙就是我們手機上用的無線數據傳輸工具,它的意思就是安卓系統手機的藍牙
Ⅵ android 藍牙室內定位 ibeacon 關於RSSI演算法
可以通過高斯權重法來對最終的位置進行加權計算。同時你也可以考慮採用濾波來進行修正。
Ⅶ Android 藍牙測距離,兩部藍牙手機距離
/**
*功能:根據rssi計算距離
*Createdbyliuhuichaoon2017/1/17.
*/
publicclassRssiUtil{
//A和n的值,需要根據實際環境進行檢測得出
privatestaticfinaldoubleA_Value=50;/**A-發射端和接收端相隔1米時的信號強度*/
privatestaticfinaldoublen_Value=2.5;/**n-環境衰減因子*/
/**
*根據Rssi獲得返回的距離,返回數據單位為m
*@paramrssi
*@return
*/
publicstaticdoublegetDistance(intrssi){
intiRssi=Math.abs(rssi);
doublepower=(iRssi-A_Value)/(10*n_Value);
returnMath.pow(10,power);
}
}
掃描藍牙過程中獲得信號強度:
[java]view plain
/*監聽掃描過程中的變化*/
=newBroadcastReceiver(){
@Override
publicvoidonReceive(Contextcontext,Intentintent){
Stringaction=intent.getAction();
//Whendiscoveryfindsadevice
if(BluetoothDevice.ACTION_FOUND.equals(action))
{
//
//通過EXTRA_DEVICE附加域來得到一個BluetoothDevice設備
BluetoothDevicedevice=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
//Ifit'salreadypaired,skipit,becauseit'sbeenlistedalready
//如果這個設備是不曾配對過的,添加到list列表
/*if(device.getBondState()!=BluetoothDevice.BOND_BONDED)
{*/
//信號強度
intrssi=intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE);