Программирование моего приложения для Android с помощью Gimbal sdk не обнаруживает маяк карданного подвеса

Я пытаюсь создать приложение для Android для обнаружения маяков на основе Gimbal с помощью Gimbal sdk, но мое приложение не может обнаружить маяк. Но если я попытаюсь использовать BluetoothGATT, я смогу обнаружить маяк. Ниже приведена часть моего кода, которая прослушивает события маяка. Проверка ключа API прошла успешно, но по-прежнему не удается отобразить близость.

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;
    }

}

person Community    schedule 07.09.2015    source источник
comment
Пример кода не показывает, как вы используете экземпляр BeaconEventListener. Вы добавили его в BeaconManager и начали слушать?   -  person Stanislav    schedule 08.09.2015
comment
Да, я создал экземпляр для BeaconEventListener и с помощью BeaconManager начал слушать.   -  person    schedule 08.09.2015
comment
Не могли бы вы также добавить этот код к вопросу? Создание слушателя не дает подробностей о том, что могло пойти не так.   -  person Stanislav    schedule 09.09.2015
comment
Во-первых, я вижу, что вы не вызываете listAdapter.notifyDataSetChanged(); в методе onBeaconSighting(). Может быть, он просто не отображает маяки, но они обнаружены? Вы определили места в GimbalManager? Мое предложение состоит в том, чтобы удалить весь код, который не используется напрямую для простого обнаружения маяков (так что оставьте только BeaconEventListener и удалите PlaceEventListener и CommunicationsManager) и посмотрите, как это работает. Вы проверили, добавили ли вы все необходимые разрешения и функции в AndroidManifest? Вы видели образец приложения Gimbal, как это делается?   -  person Stanislav    schedule 11.09.2015
comment
Да, я посмотрел образец приложения. Мне удалось получить BeaconEvents и PlaceEvents. Теперь у меня проблемы с отправкой push-уведомлений. Где в моем коде я должен вызывать метод registerForPush?   -  person    schedule 15.09.2015
comment
Насколько мне известно, это можно сделать в рамках активности, но, возможно, было бы неплохо создать другую тему и описать проблему, с которой вы столкнулись. Может быть, вы могли бы сами написать ответ на этот вопрос, чтобы другие, столкнувшиеся с подобной проблемой, сочли его полезным?   -  person Stanislav    schedule 15.09.2015


Ответы (1)


Добавление сведений о маяке в Gimbal Manager действительно решило проблему. Получил строку ниже от команды Gimbal

Обязательно добавить маяки в Gimbal Manager для обнаружения маяков.

person sag    schedule 16.09.2015