2012-03-14 31 views
1

現在地の値を取得したい。私はこのコードを使用しますが、私はちょうどこのメッセージ "位置更新を待っています..."を取得します。私は現在の場所のアドレスを取得するために電話でそれを作る必要がありますか? 携帯端末のGPSステータスが利用可能です。しかし、私は警告ダイアログを受け取っていないので、場所が有効ではないと思う。現在の場所の緯度と経度を取得するにはどうすればよいですか?現在地の緯度と経度を取得する

package mypackage; 

import net.rim.device.api.gps.*; 
import net.rim.device.api.system.Application; 
import net.rim.device.api.ui.*; 
import net.rim.device.api.ui.component.*; 
import net.rim.device.api.ui.container.*; 
import javax.microedition.location.*; 

public class MultipleFixDemo extends UiApplication 
{  
    private static int _interval = 1; 
    private EditField _status;  

    public static void main(String[] args) 
    { 
     new MultipleFixDemo().enterEventDispatcher(); 
    } 

    public MultipleFixDemo() 
    { 
     MultipleFixScreen screen = new MultipleFixScreen(); 
     screen.setTitle("Multiple Fix Demo"); 

     _status = new EditField(Field.NON_FOCUSABLE); 
     screen.add(_status); 

     startLocationUpdate(); 
     pushScreen(screen); 
    } 

    private void updateLocationScreen(final String msg) 
    { 
     invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       _status.setText(msg); 
      } 
     }); 
    } 

    private void startLocationUpdate() 
    { 
     try 
     { 
      BlackBerryCriteria myCriteria = new BlackBerryCriteria(); 
      myCriteria.enableGeolocationWithGPS(); 
      try 
      { 
       BlackBerryLocationProvider myProvider = (BlackBerryLocationProvider)LocationProvider.getInstance(myCriteria); 

       if (myProvider == null) 
       { 
        Runnable showUnsupportedDialog = new Runnable() 
        { 
         public void run() { 
          Dialog.alert("Location service unsupported, exiting..."); 
          System.exit(1); 
         } 
        }; 
        invokeLater(showUnsupportedDialog); 
       } 
       else 
       { 
        myProvider.setLocationListener(new LocationListenerImpl(), _interval, 1, 1); 

       } 
      } 
      catch (LocationException le) 
      { 
       System.err.println("Failed to retrieve a location provider"); 
       System.err.println(le); 
       System.exit(0); 
      } 
     } 
     catch (UnsupportedOperationException ue) 
     { 
      System.err.println("Require mode is unavailable"); 
      System.err.println(ue); 
      System.exit(0); 
     } 
     return; 
    } 


    private class LocationListenerImpl implements LocationListener 
    { 
     public void locationUpdated(LocationProvider provider, Location location) 
     { 
      if(location.isValid()) 

      { 
       Dialog.alert("if"); 
       double longitude = location.getQualifiedCoordinates().getLongitude(); 
       double latitude = location.getQualifiedCoordinates().getLatitude(); 
       float altitude = location.getQualifiedCoordinates().getAltitude(); 

       StringBuffer sb = new StringBuffer(); 
       sb.append("Longitude: "); 
       sb.append(longitude); 
       sb.append("\n"); 
       sb.append("Latitude: "); 
       sb.append(latitude); 
       sb.append("\n"); 
       sb.append("Altitude: "); 
       sb.append(altitude); 
       sb.append(" m"); 
       MultipleFixDemo.this.updateLocationScreen(sb.toString()); 
      } 
     } 

     public void providerStateChanged(LocationProvider provider, int newState) 
     { 
      // Not implemented 
     }   
    } 

    private final static class MultipleFixScreen extends MainScreen 
    { 
     MultipleFixScreen() 
     { 
      super(DEFAULT_CLOSE | DEFAULT_MENU); 

      RichTextField instructions = new RichTextField("Waiting for location update...",Field.NON_FOCUSABLE); 
      this.add(instructions); 
     } 
    }  
} 
+1

この質問は、http://stackoverflow.com/questions/8757160/how-i-can-get-latitude-and-longitude-in-blackberry/8879476#8879476と非常によく似ています。 –

答えて

3

私はこのコードを試してみてください。 1秒ごとに緯度と経度を更新します。

import javax.microedition.location.Location; 
import javax.microedition.location.LocationException; 
import javax.microedition.location.LocationListener; 
import javax.microedition.location.LocationProvider; 
import net.rim.device.api.ui.UiApplication; 
import net.rim.device.api.ui.component.Dialog; 
import net.rim.device.api.ui.component.RichTextField; 
import net.rim.device.api.ui.container.MainScreen; 


public final class MyScreen extends MainScreen 
{ 
    private LocationProvider locationProvider; 
    private static int interval = 1; 
    double lat; 
    double longt; 

    public MyScreen() 
    { 
     setTitle("MyTitle"); 
     startLocationUpdate();   
    } 

    private boolean startLocationUpdate() 
    { 
     boolean retval = false; 

      try 
      { 
      locationProvider = LocationProvider.getInstance(null); 

      if (locationProvider == null) 
      { 

      Runnable showGpsUnsupportedDialog = new Runnable() 
      { 
       public void run() 
       { 

       Dialog.alert("GPS is not supported on this platform, exiting..."); 
       //System.exit(1); 
       } 
      }; 

      UiApplication.getUiApplication().invokeAndWait(showGpsUnsupportedDialog); // Ask event-dispatcher thread to display dialog ASAP. 
      } 
      else 
      { 

      locationProvider.setLocationListener(new LocationListenerImpl(), interval, 1, 1); 

      retval = true; 
      } 
      } 
      catch (LocationException le) 
      { 
       System.err.println("Failed to instantiate the LocationProvider object, exiting..."); 
       System.err.println(le); 
       System.exit(0); 
      } 
      return retval; 
      } 

      private class LocationListenerImpl implements LocationListener 
      { 

      public void locationUpdated(LocationProvider provider, Location location) 
      { 
        if(location.isValid()) 
        { 
         double longitude = location.getQualifiedCoordinates().getLongitude(); 
         double latitude = location.getQualifiedCoordinates().getLatitude(); 

         updateLocationScreen(latitude, longitude);    

        } 
      } 

      public void providerStateChanged(LocationProvider provider, int newState) 
      { 
      } 
     } 

     private void updateLocationScreen(final double latitude, final double longitude) 
      { 
        UiApplication.getUiApplication().invokeAndWait(new Runnable() 
        { 
        public void run() 
        { 
        lat = latitude; 
        longt = longitude; 


        RichTextField txt=new RichTextField(); 
        txt.setText("Long=="+longt); 

        RichTextField txt1=new RichTextField(); 
        txt1.setText("lat=="+lat); 

        add(txt); 
        add(txt1); 


//     persistentLatitude.setContents(Double.toString(latitude)); 
//     persistentLongitude.setContents(Double.toString(longitude)); 



        } 
        }); 
      } 
} 
0

このコードを試して現在の位置を取得してください。

private LocationProvider provider; 
    private Location _location= null; 


     Criteria myCriteria = new Criteria(); 
     myCriteria.setCostAllowed(true); 
     provider = LocationProvider.getInstance(myCriteria); 
     _location = provider.getLocation(4); 
     QualifiedCoordinates coordinates = _location.getQualifiedCoordinates(); 
     String lon =Double.toString(coordinates.getLongitude()); 
     String lat = Double.toString(coordinates.getLatitude()); 
0

あなたが"How i can get Latitude and Longitude in blackberry?"に私の答えをチェックするよりも、Blackberry OS 5.0と文字で作業している場合。それは2または3秒以内に場所を取得します。私はそれがあなたを助けることを願っています。それをデバイスで試してチェックしてください。

関連する問題