2016-06-21 1 views
0
BluetoothLeAdvertiser advertiser = BluetoothAdapter.getDefaultAdapter().getBluetoothLeAdvertiser(); 

Cela renvoie la valeur null. J'ai essayé sur une API 21 et sur un périphérique API 23, mais avec le même résultat. Je n'ai aucune idée de ce qui me manque?getBluetoothLeAdvertiser() renvoie la valeur null

L'application construit et fonctionne très bien, jusqu'à ce que bien sûr l'annonceur est utilisé et les accidents de l'application.

J'apprécie toute aide fournie! :)

+0

cela pourrait être pertinent: http://stackoverflow.com/questions/26441785/ fait-bluetoothleadvertiser-travail-on-a-nexus-5 avec Android-5-0 – Nfear

+0

Il est possible que votre appareil ne prend pas en charge le mode périphérique Bluetooth lE. Voici [discussion sur les modèles pris en charge] (http://stackoverflow.com/questions/26482611/chipsets-devices-supporting-android-5-ble-peripheral-mode) et au moment [cette page] (https: // altbeacon .github.io/android-balise bibliothèque/balise émetteur-devices.html) est probablement la meilleure source pour cette information. –

+0

Wow, ok- merci. Existe-t-il un autre moyen de diffuser un signal Bluetooth à partir d'un appareil Android? – Anfaje

Répondre

4

Si vous consultez le développeur docs, lien here. Vous verrez que l'objet nul est retourné dans le cas suivant:

Renvoie un objet BluetoothLeAdvertiser pour les opérations Bluetooth LE Publicité. Renvoie la valeur null si Bluetooth est désactivé ou si Bluetooth LE Advertising n'est pas pris en charge sur cet appareil.

Si vous ne savez pas si l'appareil prend en charge Bluetooth à tout ce que vous devriez vérifier si le BluetoothAdapter retourné par le système est null

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
if (mBluetoothAdapter == null) { 
    // Device does not support Bluetooth 
} 

Ensuite, ils vous conseiller d'appeler isMultipleAdvertisementSupported() pour voir si elle est prise en charge d'abord .

if(!mBluetoothAdapter.isMultipleAdvertisementSupported()){ 
    //Device does not support Bluetooth LE 
} 

S'il prend en charge BLE vous devez vérifier si Bluetooth est activé et si non, sensibiliser l'utilisateur et le résoudre.

if (!mBluetoothAdapter.isEnabled()) { 
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 
} 

devrait couvrir la plupart que des temps l'adaptateur est null

0

Vérifier mBluetoothAdapter != null && mBluetoothAdapter.isEnabled() avant de commencer le balayage