2016-04-22 1 views
1

Je souhaite envoyer une annonce BLE à l'aide de la bibliothèque de balises Android. Voici le code que j'utilise pour cela.Code d'erreur 2 dans l'émetteur de la balise pour la bibliothèque Android Beacon

package com.example.beacon_emitter; 

import java.util.Arrays; 

import org.altbeacon.beacon.Beacon; 
import org.altbeacon.beacon.BeaconParser; 
import org.altbeacon.beacon.BeaconTransmitter; 

import android.support.v7.app.ActionBarActivity; 
import android.app.Activity; 
import android.bluetooth.le.AdvertiseCallback; 
import android.bluetooth.le.AdvertiseSettings; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Toast; 


public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Beacon beacon = new Beacon.Builder() 
     .setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6") 
     .setId2("1") 
     .setId3("2") 
     .setManufacturer(0x0118) 
     .setTxPower(-59) 
     .setDataFields(Arrays.asList(new Long[] {0l})) 
     .build(); 
     BeaconParser beaconParser = new BeaconParser() 
     .setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"); 
     BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser); 
     beaconTransmitter.startAdvertising(beacon,new AdvertiseCallback() { 
      @Override 
      public void onStartFailure(int errorCode) { 
       Log.e("beacon", "Advertisement start failed with code: "+errorCode); 
      } 

      @Override 
      public void onStartSuccess(AdvertiseSettings settingsInEffect) { 
       Log.i("beacon", "Advertisement start succeeded."); 
      } 
     }); 

     int result = BeaconTransmitter.checkTransmissionSupported(getApplicationContext()); 
     Toast.makeText(this, "Device info " + result, Toast.LENGTH_LONG).show(); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

Il me donne toujours un code d'erreur 2, ADVERTISE_FAILED_TOO_MANY_ADVERTISERS. Mais la chose étrange est quand j'ai vérifié le message de pain grillé il indique que mon appareil est soutenu la transmission de balise. Je suis confus.

Aidez s'il vous plaît!

Merci à l'avance.

+0

Que voyez-vous sous Paramètres -> À propos du téléphone -> Numéro de modèle et paramètres -> À propos du téléphone -> Numéro de build – davidgyoung

Répondre

0

Quelques conseils:

  1. La méthode BeaconTransmitter.checkTransmissionSupported() vérifie uniquement pour voir si l'appareil a Bluetooth LE et que le système d'exploitation vous donnera un BluetoothAdvertiser.

  2. Pour voir si quelqu'un d'autre a réussi à obtenir votre appareil pour transmettre, vérifier pour voir si elle est sur cette liste: http://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html

  3. La réponse ADVERTISE_FAILED_TOO_MANY_ADVERTISERS peut indiquer qu'une autre application est la publicité pour un phare, et tous les emplacements de publicité sont utilisés. Assurez-vous que vous n'avez pas d'autres applications publicitaires en arrière-plan. Redémarrez ou désinstallez d'autres applications qui pourraient le faire si nécessaire. Essayez le Locate Beacon app qui est basé sur cette même bibliothèque, et voyez s'il peut annoncer une balise avec succès. Cela permettra d'éliminer tout problème possible avec votre code.

EDIT: Sur la base des commentaires ci-dessous, il est raisonnable de conclure que le firmware pour le kit eval Intrynsyc ne met pas en œuvre correctement l'interface entre Android et la puce Bluetooth. Autrement, il signalerait que la publicité n'est pas disponible ou qu'il ne renverrait pas de message d'erreur lors du lancement de la publicité. La prochaine étape appropriée serait d'ouvrir un problème avec Intrynsyc et de rapporter ces résultats.

+0

Comme j'essaye ce kit d'évaluation d'Intrynsyc, je n'ai pas d'accès Internet ne pas être en mesure de télécharger l'application Locate Beacon. J'ai vérifié dans les paramètres qu'aucune application en cours n'utilisait le matériel Bluetooth ou n'envoyait d'autres publicités. – MMJ

+0

J'ai téléchargé le fichier apk de l'application et l'installer sur l'appareil. Localisez l'application "Trop d'annonceurs, errorcode-2". Mais je n'ai pas vu d'autre application est en cours d'exécution ou l'envoi de la transmission? Existe-t-il un moyen de vérifier qui d'autre transmet la balise? – MMJ

+0

Voir ma modification ci-dessus. – davidgyoung