-1

私のアプリケーションでは、現在の位置情報を取得する必要があります。私は以下のコードを使用します。それをbuttonclickと呼びますが、デバイスやシミュレータでは動作しません。GPS位置情報の問題

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(); 
} 
+0

は、あなたはそれが動作しない場合の詳細を持っていますか?たとえば、例外が発生していますか?もしそうなら、どの行に?または、結果が期待と異なるのですか?何が動作していないの詳細についていくつか必要があります。 –

答えて

0

シミュレータでGPSをシミュレートしましたか? Simulate - > GPS Positionの順に選択し、ダイアログ内で位置を追加するか、シミュレートされたルートを設定します。

0

ステップ1は、例外ハンドラにいくつかのログを記録することです。

これは、おそらく例外がスローされていることを示します。そのことが分かれば、コードが例外を引き起こす何らかの誤りをどのようにしているのかを知ることができます。

0

これはおそらくGPSの問題ではありません。イベントスレッドを使わずにUIフィールドを更新しようとしている可能性があります。これを回避する方法については、my answer to this related questionを参照してください。この「混乱」への説明のための

0
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 location-based services

+0

この混乱になる説明はありませんか? –