2016-05-13 29 views
8

Ich benutze Android Beacon Library in meiner App und ich kopierte, Wort für Wort, ihr Beispiel für die Auswahl, aber ich bekomme immer den Fehler, den Sie unter dem Code sehen. Jede Hilfe wäre sehr dankbar, ich bin jetzt gerade in BTLE bekommen/BakenAndroid BTLE -> Kann Callback Wrapper nicht finden

package com.example.josh.beacons; 

import android.os.Bundle; 
import android.os.RemoteException; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 

import org.altbeacon.beacon.Beacon; 
import org.altbeacon.beacon.BeaconConsumer; 
import org.altbeacon.beacon.BeaconManager; 
import org.altbeacon.beacon.BeaconParser; 
import org.altbeacon.beacon.RangeNotifier; 
import org.altbeacon.beacon.Region; 

import java.util.Collection; 

public class MainActivity extends AppCompatActivity implements BeaconConsumer { 
    protected static final String TAG = "RangingActivity"; 
    private BeaconManager beaconManager; 

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

     beaconManager = BeaconManager.getInstanceForApplication(this); 
     beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25")); 
     beaconManager.bind(this); 
    } 
    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     beaconManager.unbind(this); 
    } 
    @Override 
    public void onBeaconServiceConnect() { 
     beaconManager.setRangeNotifier(new RangeNotifier() { 
      @Override 
      public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { 
       if (beacons.size() > 0) { 
        Log.i(TAG, "The first beacon I see is about " + beacons.iterator().next().getDistance() + " meters away."); 
       } 
      } 
     }); 

     try { 
      beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null)); 
     } catch (RemoteException e) { } 
    } 
} 

Fehler erhalte ich:

05-12 20:21:44.769 25775-25775/com.example.josh.beacons D/BluetoothAdapter: STATE_ON 
05-12 20:21:44.770 25775-25775/com.example.josh.beacons D/BluetoothLeScanner: could not find callback wrapper 
05-12 20:21:44.787 25775-26783/com.example.josh.beacons D/RangingActivity: didRangeBeacons 0 
+0

Ändern Sie "myRangingUniqueId" in die UUID Ihres Beacons? –

+1

In der Tat habe ich vergessen, Core Location-Erlaubnis zu beantragen. PROBLEM Gelöst – user3916570

Antwort

6

Seien Sie vorsichtig, nicht zu nehmen Zeilen, die Sie in LogCat sehen zu ernst, wenn sie nicht von deinem eigenen Code. Dies gilt insbesondere, wenn die Zeile mit "D /" beginnt, was auf eine Debug-Zeile hinweist, nicht auf einen Fehler ("E /"). Ich habe Dutzende von Beacon-Apps erstellt, habe diese Zeile öfter gesehen, als ich zählen kann und kann zuversichtlich sagen, dass es kein Problem anzeigt.

Endergebnis: Sie können diese Nachricht ignorieren. Beachten Sie, dass der Android-Bluetooth-Stapel in LogCat notorisch laut ist. Dies ist nicht die erste Zeile, die Sie ignorieren lernen.

+0

Nun, dann kann ich nicht herausfinden, warum ich 0 Beacons erkenne. Dachte, das könnte der Grund sein. – user3916570

+0

Ich habe gerade angefangen, die Protokolle "STATE_ON" und "Callback Wrapper" zu finden, seitdem konnte meine App keine Beacons mehr erkennen (funktionierte vorher). Ich benutze Samsung S6 6.0.1 und habe nichts geändert. Könnte mit https://code.google.com/p/android/issues/detail?id=191831#c64 verbunden sein Die gleiche App funktioniert immer noch auf anderen Telefonen. Merkwürdiges Ding: Die Beaconmanager App von beaconinside erkennt immer noch Beacons. – Zuop

+0

Also "** Callback Wrapper ** konnte nicht gefunden werden" kann sicher ignoriert werden? –

5

Während Sie, wie die angenommene Antwort sagt, diese Nachricht ignorieren können, sagt es Ihnen etwas. Höchstwahrscheinlich wird Ihnen mitgeteilt, dass auf Ihrem Gerät für Ihre App keine Standortberechtigungen aktiviert sind, die die Funktion des Beacon-Scans beeinträchtigen. Wenn die App richtigen Berechtigungen hat und richtig ist das Scannen werden Sie etwas mehr wie

D/BluetoothAdapter: STATE_ON 
D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=5 

sehen Wenn Sie API-Ebene zielen 23+, auch wenn Ihr minsdk niedriger eingestellt ist (wie 16), auf jeden Fall Sie einchecken möchten Ihr Code für Standortberechtigungen ist aktiviert.

Ich habe viele Stunden verloren, bevor ich gemerkt habe, dass es nur stumm gescheitert ist, weil die Standortdienste für die App abgeschaltet wurden.

+1

~ "** Höchstwahrscheinlich sagt es Ihnen, dass auf Ihrem Gerät die Standortberechtigungen deaktiviert sind **". Nicht wahr in meinem Fall. –

+0

Dies ist die richtige Antwort auf die Frage. – samir