Blackberry Connection Nightmare - PullRequest
       2

Blackberry Connection Nightmare

0 голосов
/ 06 февраля 2012

Я занят написанием программы, которая передает координаты GPS на сервер с мобильного телефона, где координаты затем используются для расчетов. Но я постоянно бью стену ежевикой. Я создал приложение для Android, и оно прекрасно работает, но не может связаться с сервером на реальном устройстве BlackBerry. Я протестировал приложение в симуляторе, и оно отлично работает, но когда я устанавливаю его на реальный телефон, я не получаю запрос телефона.

Я довольно много прочитал о секретных строках, добавляемых в конце URL, поэтому я адаптировал некоторый демонстрационный код, чтобы получить первый доступный транспорт, но все еще ничего ...

Приложение подписано , и я обычно затем устанавливаю его путем отладки с помощью eclipse или непосредственно на устройстве из файла .jad и разрешаю приложению необходимые разрешения.

Текущий код был адаптирован из демонстрации HTTP-соединения в Blackberry SDK.

Не могли бы вы взглянуть и дать мне направление? Я теряю слишком много волос здесь ...

Бэкэнд-сервис, который продолжает работать:

public void run() {

        System.out.println("Starting Loop");

        Criteria cr = new Criteria();
        cr.setHorizontalAccuracy(Criteria.NO_REQUIREMENT);
        cr.setVerticalAccuracy(Criteria.NO_REQUIREMENT);
        cr.setCostAllowed(false);
        cr.setPreferredPowerConsumption(Criteria.NO_REQUIREMENT);
        cr.setPreferredResponseTime(1000);
        LocationProvider lp = null;
        try {
            lp = LocationProvider.getInstance(cr);
        } catch (LocationException e) {
            System.out.println("*****************Exception" + e);
        }
        if (lp == null) {
            UiApplication.getUiApplication().invokeLater(new Runnable() {
                public void run() {
                    Dialog.alert("GPS not supported!");
                    return;
                }
            });
        } else {

            System.out
                    .println(lp.getState() + "-" + LocationProvider.AVAILABLE);

            switch (lp.getState()) {
            case LocationProvider.AVAILABLE:
                // System.out.println("Provider is AVAILABLE");
                while (true) {
                    Location l = null;
                    int timeout = 120;
                    try {
                        l = lp.getLocation(timeout);
                        final Location fi = l;

                        System.out.println("Got a Coordinate "
                                + l.getQualifiedCoordinates().getLatitude()
                                + ", "
                                + l.getQualifiedCoordinates().getLongitude());

                        System.out.println("http://" + Constants.website_base
                                + "/apis/location?device_uid=" + Constants.uid
                                + "&lat="
                                + l.getQualifiedCoordinates().getLatitude()
                                + "&lng="
                                + l.getQualifiedCoordinates().getLongitude());

                        if (!_connectionThread.isStarted()) {
                            fetchPage("http://"
                                    + Constants.website_base
                                    + "/apis/location?device_uid="
                                    + Constants.uid
                                    + "&lat="
                                    + l.getQualifiedCoordinates().getLatitude()
                                    + "&lng="
                                    + l.getQualifiedCoordinates()
                                            .getLongitude());
                        } else {
                            createNewFetch("http://"
                                    + Constants.website_base
                                    + "/apis/location?device_uid="
                                    + Constants.uid
                                    + "&lat="
                                    + l.getQualifiedCoordinates().getLatitude()
                                    + "&lng="
                                    + l.getQualifiedCoordinates()
                                            .getLongitude());
                        }

                        Thread.sleep(1000 * 60);

                    } catch (LocationException e) {
                        System.out.println("Location timeout");
                    } catch (InterruptedException e) {
                        System.out.println("InterruptedException"
                                + e.getMessage());
                    } catch (Exception ex) {
                        System.err.println(ex.getMessage());
                        ex.printStackTrace();
                    }
                }
            }
    }

Мое соединение установлено с:

ConnectionFactory connFact = new ConnectionFactory();
ConnectionDescriptor connDesc = connFact.getConnection(getUrl());

// Open the connection and extract the data.
try {
    // StreamConnection s = null;
    // s = (StreamConnection) Connector.open(getUrl());
    HttpConnection httpConn = (HttpConnection) connDesc.getConnection();
    /* Data is Read here with a Input Stream */

Есть идеи?

1 Ответ

0 голосов
/ 07 марта 2012

Разобрался!

Используя функцию, которую я нашел в Интернете, чтобы определить, какая;расширение для использования при подключении с использованием многочисленных Try / Catch.Затем пришлось установить настройки интернет-APN.Я в Южной Африке, использую Vodacom, поэтому APN - это «Интернет» без пароля.

Едва осталось волос ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...