2015-09-07 11 views
9

Ich versuche, eine Android-Anwendung zu Gimbal basierte Beacons mit dem Gimbal SDK zu erkennen, aber meine Anwendung kann nicht in der Lage sein, das Beacon zu erkennen. Aber wenn ich BluetoothGATT benutze, kann ich den Beacon erkennen. Es folgt der Teil meines Codes, der auf Beacon-Ereignisse hört. Die Überprüfung des API-Schlüssels ist erfolgreich, kann jedoch die Nähe nicht anzeigen.Programmierung meiner Android-Anwendung mit Gimbal SDK erkennt nicht die Gimbal Beacon

public class MainActivity extends Activity { 

    private PlaceManager placeManager; 
    private PlaceEventListener placeEventListener; 
    private BeaconEventListener beaconEventListener; 
    private BeaconManager beaconManager; 
    private String TAG = "beacon"; 

    public ArrayAdapter<String> listAdapter; 
    public ListView listView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     Gimbal.setApiKey(getApplication(), 
       "MY API KEY "); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     initView(); 

     monitorPlace(); 

     listenBeacon(); 



     CommunicationManager.getInstance().startReceivingCommunications(); 

    } 

    private void listenBeacon() { 
     BeaconEventListener beaconEventListener = getBeaconEventListener(); 
     BeaconManager beaconManager = new BeaconManager(); 
     beaconManager.addListener(beaconEventListener); 
     beaconManager.startListening(); 
    } 

    private void monitorPlace() { 
     placeEventListener = getPlaceEventListener(); 

     // placeManager = PlaceManager.getInstance(); 
     // placeManager.addListener(placeEventListener); 
     placeManager = PlaceManager.getInstance(); 
     placeManager.addListener(placeEventListener); 
     placeManager.startMonitoring(); 
    } 

    private void initView() { 
     GimbalLogConfig.enableUncaughtExceptionLogging(); 
     listAdapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_expandable_list_item_1); 

     listView = (ListView) findViewById(R.id.list); 
     listView.setAdapter(listAdapter); 
     listAdapter.add(" Gimbal API Key got Set Successfuly"); 
     listAdapter.notifyDataSetChanged(); 
     GimbalDebugger.enableBeaconSightingsLogging(); 
    } 

    private BeaconEventListener getBeaconEventListener() { 
     Log.i(TAG, "BeaconEventListener started sucessfully..."); 
     BeaconEventListener beaconSightingListener = new BeaconEventListener() { 
      @Override 
      public void onBeaconSighting(BeaconSighting beaconSighting) { 

       super.onBeaconSighting(beaconSighting); 


       listAdapter.add(String.format("Name of Beacon is %s", 
         beaconSighting.getBeacon().getName())); 
       listAdapter.add(String.format("UUID is %s", beaconSighting 
         .getBeacon().getUuid())); 
       listAdapter.add(String.format("RSSI is %s", 
         beaconSighting.getRSSI())); 
       listAdapter.add(String.format("Battery Level is %s", 
         beaconSighting.getBeacon().getBatteryLevel())); 
       listAdapter.add(String.format("Temprature data is %s", 
         beaconSighting.getBeacon().getTemperature())); 

      } 
     }; 




    } 

    private PlaceEventListener getPlaceEventListener() { 

     PlaceEventListener obj = new PlaceEventListener() { 
      @Override 
      public void onBeaconSighting(BeaconSighting sight, List<Visit> visit) { 


       super.onBeaconSighting(sight, visit); 

       listAdapter.add(String.format("Beacon Found: %s", 
         sight.getBeacon())); 
       listAdapter.add(String.format("Name of Beacon is %s", sight 
         .getBeacon().getName())); 
       listAdapter.add(String.format("Identifier is %s", sight 
         .getBeacon().getIdentifier())); 
       listAdapter.add(String.format("RSSI is %s", sight.getRSSI())); 
       listAdapter.add(String.format("UUID is %s", sight.getBeacon() 
         .getUuid())); 
       listAdapter.add(String.format("Temprature is%s", sight 
         .getBeacon().getTemperature())); 
       listAdapter.add(String.format("BatteryLevel is %s", sight 
         .getBeacon().getBatteryLevel())); 
       listAdapter.add(String.format("Icon URL is %s", sight 
         .getBeacon().getIconURL())); 

       listAdapter.add(String.format("Start Visit for %s", visit 
         .iterator().toString())); 

      } 

      // @Override 
      public void onVisitStart(Visit visit) { 
       super.onVisitStart(visit); 

       listAdapter.add(String.format("Start Visit for %s", visit 
         .getPlace().getName())); 

       Toast.makeText(getApplicationContext(), 
         visit.getPlace().getName(), Toast.LENGTH_SHORT).show(); 
       listAdapter.notifyDataSetChanged(); 

      } 

      @Override 
      public void onVisitEnd(Visit visit) { 
       // TODO Auto-generated method stub 
       super.onVisitEnd(visit); 

       listAdapter.add(String.format("End Visit for %s", visit 
         .getPlace().getName())); 
       listAdapter.notifyDataSetChanged(); 

      } 

     }; 


     return obj; 
    } 

} 
+0

Der Beispielcode zeigt nicht hinzufügen, wie Sie die BeaconEventListener Instanz verwenden. Hast du es zum BeaconManager hinzugefügt und angefangen zuzuhören? – Stanislav

+0

Ja, ich habe eine Instanz für BeaconEventListener erstellt und mit BeaconManager habe ich angefangen zuzuhören. –

+0

Können Sie diesen Code auch zur Frage hinzufügen? Die Erschaffung des Zuhörers gibt nicht viele Details darüber, was schief gehen könnte. – Stanislav

Antwort

5

Das Hinzufügen der Beacon-Details im Gimbal-Manager hat das Problem gelöst. Got die unter Leitung von Gimbal Team

Es ist zwingend notwendig, die Baken in Gimbal-Manager zur Erkennung Baken

Verwandte Themen