『壹』 蘋果耳機和安卓手機藍牙連接不上是怎麼回事
1、以下以手機和藍牙耳機再次連接步驟如下:
(1)使藍牙耳機在開機狀態,需要長按藍牙耳機的開關鍵5秒左右。
(2)直到指示燈:藍燈紅燈交替閃爍再松開。
(3)這個時候藍牙耳機和手機會再次的進入匹對狀態。
(4)等手機上面顯示藍牙耳機後,點擊確定即可連接。
(5)注意手機和藍牙耳機的有效距離在10米內。
2、排除本身就不能配對成功的情況,如果曾經配對成功過,然後點選了忽略設置,那麼摁住藍牙設備上的藍族友牙按鈕,摁住不放5-6秒鍾,就能重新被設備搜索到了。
(1)android搜索不到藍牙設備擴展閱讀:
藍牙(Bluetooth®):是一種無線技術標准,可實現固定設備、移動設備和樓宇個人域網之間的短距離數據交換(使用2.4—2.485GHz的ISM波段的UHF無線電波)。藍牙技術最初由電信巨頭愛立信公司於1994年創制,當時是作為RS232數據線的替代方案。藍牙可連接多個設備,克服了數據同步的難題。
通訊連接
藍牙主設備最多可與一個微微網(一個差備採用藍牙技術的臨時計算機兆慶槐網路)中的七個設備通訊, 當然並不是所有設備都能夠達到這一最大量。
設備之間可通過協議轉換角色,從設備也可轉換為主設備(比如,一個頭戴式耳機如果向手機發起連接請求,它作為連接的發起者,自然就是主設備,但是隨後也許會作為從設備運行。)
藍牙核心規格提供兩個或以上的微微網連接以形成分布式網路,讓特定的設備在這些微微網中自動同時地分別扮演主和從的角色。
數據傳輸可隨時在主設備和其他設備之間進行(應用極少的廣播模式除外)。
主設備可選擇要訪問的從設備;典型的情況是,它可以在設備之間以輪替的方式快速轉換。因為是主設備來選擇要訪問的從設備,理論上從設備就要在接收槽內待命,主設備的負擔要比從設備少一些。主設備可以與七個從設備相連接,但是從設備卻很難與一個以上的主設備相連。
規格對於散射網中的行為要求是模糊的。
許多USB藍牙適配器或「軟體狗」是可用的,其中一些還包括一個IrDA適配器。
『貳』 Android 6.0 掃描不到 Ble 設備需開啟位置許可權
最近總是有用戶反饋說APP掃描不到設備,讓我很費解了一段時間,尤其是華為和OPPO,公司還專門買了這款手機,然後測試沒問題,直到一個偶然,我把手機定位給關了,才發現這個問題,Android 6.0 掃描設備需開啟位置許可權,用戶突然一天把定位給關了,我們在掃描之前又沒檢測,唉,一個邏輯不嚴謹就會出現各種問題,現在記錄一下
許可權獲取
<uses-permission android:name="android.permission.BLUETOOTH"/> 使用藍牙所需要的許可權
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 使用掃描和設置藍牙的許可權(申明這一個許可權必須申明上面一個許可權)
在Android5.0之前,是默認申請GPS硬體功能的。而在Android 5.0 之後,需要在manifest 中申明GPS硬體模塊功能的使用。
<!-- Needed only if your app targets Android 5.0 (API level 21) or higher. -->
<uses-feature android:name="android.hardware.location.gps" />
在 Android 6.0 及以上,還需要打開位置許可權。如果應用沒有位置許可權,藍牙掃描功能不能使用(其它藍牙操作例如連接藍牙設備和寫入數據不受影響)
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
除了上面的設置之外,如果想設置設備只支持 BLE,可以加上下面這句話
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
同樣,如果不想添加 BLE 的支持,那麼可以設置 required="false"
然後可以在運行時判斷設備是否支持 BLE,
// Use this check to determine whether BLE is supported on the device. Then
// you can selectively disable BLE-related features.
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();
finish();
}
打開定位 (Location)
首先檢查定位是否打開,可以像下面這樣操作:
/**
* Location service if enable
*
* @param context
* @return location is enable if return true, otherwise disable.
*/
public static final boolean isLocationEnable(Context context) {
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
boolean networkProvider = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
boolean gpsProvider = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (networkProvider || gpsProvider) return true;
return false;
}
如果定位已經打開,可以搜索到 ble 設備;如果定位沒有打開,則需要用戶去打開,像下面這樣:
private static final int REQUEST_CODE_LOCATION_SETTINGS = 2;
private void setLocationService() {
Intent locationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
this.startActivityForResult(locationIntent, REQUEST_CODE_LOCATION_SETTINGS);
}
進入定位設置界面,讓用戶自己選擇是否打開定位。選擇的結果獲取:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_LOCATION_SETTINGS) {
if (isLocationEnable(this)) {
//定位已打開的處理
} else {
//定位依然沒有打開的處理
}
} else super.onActivityResult(requestCode, resultCode, data);
}