В моем приложении необходимо получить информацию о текущем местоположении, я использую следующий код; и назовите это нажатием кнопки, но это не работает в устройстве и в симуляторе, если у кого-то есть какие-либо идеи, пожалуйста, помогите.

private void getLocationServices(){
    Thread geoThread=new Thread(){  
        public void run(){
            try{
                Criteria myCriteria = new Criteria();
                myCriteria.setCostAllowed(false);
                try{
                    LocationProvider myLocationProvider = LocationProvider.getInstance(myCriteria);
                    try{
                        locationaddress=new AddressInfo();
                        Location myLocation = myLocationProvider.getLocation(300);
                        _lattitude = myLocation.getQualifiedCoordinates().getLatitude();
                        _longitude = myLocation.getQualifiedCoordinates().getLongitude();
                        int intLatitude = (int) _lattitude * 100000;
                        int intLongitude = (int) _longitude * 100000;
                        try{
                            Landmark[] results= Locator.reverseGeocode(intLatitude, intLongitude, Locator.ADDRESS);
                            if (results != null && results.length > 0) {
                                locationaddress=results[0].getAddressInfo();
                                lblLoc.setText(locationaddress.getField(AddressInfo.CITY));
                            }
                        }catch (Exception e) {
                            // TODO: handle exception
                        }

                    }catch (Exception e) {
                        // TODO: handle exception
                    }

                }catch (Exception e) {
                    // TODO: handle exception
                }
            }catch (Exception e) {
                // TODO: handle exception
            }
        }
    };
    geoThread.start();
}
-1
Jisson 8 Фев 2011 в 19:12
У вас есть более подробная информация о том, где это не работает? Например, вы получаете исключение? Если да, то на какой линии? Или ваши результаты отличаются от ожидаемых? Нужно больше подробностей о том, что не работает.
 – 
Scott W
8 Фев 2011 в 19:59

4 ответа

Вы имитировали GPS в симуляторе? Simulate -> GPS Position, затем в диалоговом окне добавьте позицию или настройте смоделированный маршрут.

0
Richard 8 Фев 2011 в 19:49

Вероятно, это не проблема GPS. Вероятно, вы пытаетесь обновить поле пользовательского интерфейса, не находясь в потоке событий. См. мой ответ на этот связанный вопрос для получения информации о том, как этого избежать.

0
Community 23 Май 2017 в 15:13
CustomMapField mMapField;
Coordinates mCoordinates;
BlackBerryCriteria blackBerryCriteria = null;
BlackBerryLocation blackBerryLocation = null;
BlackBerryLocationProvider blackBerryLocationProvider = null;
double Doublelat = 0.0;
double Doublelng = 0.0;
blackBerryCriteria = new BlackBerryCriteria();
if(GPSInfo.isGPSModeAvailable(GPSInfo.GPS_MODE_CELLSITE)){
   blackBerryCriteria.setMode(GPSInfo.GPS_MODE_CELLSITE);
}else if(GPSInfo.isGPSModeAvailable(GPSInfo.GPS_MODE_ASSIST)){
   blackBerryCriteria.setMode(GPSInfo.GPS_MODE_ASSIST);
}else if(GPSInfo.isGPSModeAvailable(GPSInfo.GPS_MODE_AUTONOMOUS)){
   blackBerryCriteria.setMode(GPSInfo.GPS_MODE_AUTONOMOUS);
}else{
   blackBerryCriteria.setCostAllowed(true);
   blackBerryCriteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);
} try {
   blackBerryLocationProvider = (BlackBerryLocationProvider)               BlackBerryLocationProvider.getInstance(blackBerryCriteria);
   blackBerryLocation = (BlackBerryLocation) blackBerryLocationProvider.getLocation(60);
   QualifiedCoordinates qualifiedCoordinates = blackBerryLocation.getQualifiedCoordinates();
   Doublelat = qualifiedCoordinates.getLatitude();
   Doublelng = qualifiedCoordinates.getLongitude();
   mCoordinates = new  Coordinates(Doublelat, Doublelng, 0);
   MapView mapView = new MapView();
   mapView.setLatitude(finalintlat);
   mapView.setLongitude(finalintlng);
   mapView.setZoom(10);
   MapsArguments mapsArgs = new MapsArguments(mapView);
   Invoke.invokeApplication(Invoke.APP_TYPE_MAPS, mapsArgs);
}catch(Exception e){
   System.out.println("Error in location :"+e.toString());
   System.out.println("Error in location :"+e.getMessage());
}

Для объяснения этого «беспорядка» см.: услуги на основе местоположения Blackberry

0
Community 23 Май 2017 в 14:43
Нет объяснений, чтобы пойти с этим беспорядком?
 – 
Andrew Barber
6 Окт 2012 в 05:56

Шаг первый — поместить журнал в ваши обработчики исключений.

Это, вероятно, покажет вам, что выбрасывается какое-то исключение. Как только вы разберетесь с этим, вы увидите, что код может делать что-то не так, что вызывает исключение.

0
Michael Donohue 8 Фев 2011 в 20:13