2012-02-01 3 views
1

Я пытаюсь создать простое приложение, в котором GPS-координаты будут сохранены и просто отобразятся на экране следующего действия.Android: Как я могу сохранить GPS-координаты и начать новую работу при обнаружении?

До сих пор мне удалось получить координаты для отображения в тосте, поэтому я знаю, что код работает. У меня проблемы с логикой. Я пытаюсь начать новую деятельность (та, которая будет отображать координаты), когда будут найдены долгота и широта.

Может ли кто-нибудь предложить какие-либо предложения относительно того, как я могу сделать что-то подобное?

public class GPSActivity extends Activity{ 

float longitude  = 0; 
float latitude  = 0; 


@Override 
public void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 


/* Use the LocationManager class to obtain GPS locations */ 
LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
LocationListener mlocListener = new MyLocationListener(); 

mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 

Intent intent = new Intent(this, Display.class); 
Bundle extras = new Bundle(); 


do{ 
    extras.putFloat("long", longitude); 
    extras.putFloat("lat", latitude); 
}while(longitude == 0); 


// if longitude is no longer zero - meaning it is found 
// add extras and call activity. 
if(longitude != 0){ 
    intent.putExtras(extras); 
    startActivity(intent); 
}} // end activity 






/* Class My Location Listener */ 
public class MyLocationListener implements LocationListener { 



@Override 
public void onLocationChanged(Location loc) { 

longitude = (float) loc.getLatitude(); 
latitude = (float) loc.getLongitude(); 

String text = "My current location is: " + "Latitud = " + loc.getLatitude() + "Longitud = " + loc.getLongitude(); 

Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show(); 

} 



@Override 
public void onProviderDisabled(String provider){ 

Toast.makeText(getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT).show(); 
} 


@Override 
public void onProviderEnabled(String provider) { 

Toast.makeText(getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show(); 
} 


@Override 
public void onStatusChanged(String provider, int status, Bundle extras){ 
} 

}} // End GPS activity 

ответ

1

Не знаю, почему вы поставили этот раздел в OnCreate(), но если вы переместите его в onLocationChanged(), он должен работать.

public class GPSActivity extends Activity{ 

    float longitude  = 0; 
    float latitude  = 0; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     /* Use the LocationManager class to obtain GPS locations */ 
     LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     LocationListener mlocListener = new MyLocationListener(); 

     mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 

    } 

    /* Class My Location Listener */ 
    public class MyLocationListener implements LocationListener {   

    @Override 
    public void onLocationChanged(Location loc) { 

     longitude = (float) loc.getLatitude(); 
     latitude = (float) loc.getLongitude(); 

     String text = "My current location is: " + "Latitud = " + loc.getLatitude() + "Longitud = " + loc.getLongitude(); 

     Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show(); 

     Intent intent = new Intent(GPSActivity.this, Display.class); 
     Bundle extras = new Bundle();   

     extras.putFloat("long", longitude); 
     extras.putFloat("lat", latitude);   

     intent.putExtras(extras); 
     startActivity(intent);  

    }   
+0

привет, я пробовал этот подход, но при сбое приложения при попытке запустить активность при вызове nullpointerexception. – BodhiByte

+0

Да, пример предполагает, что действие, которое вы хотите запустить, - Display.class, и, возможно, это не так, не так ли? – Scalarr

+0

Нет, класс отображения покажет координаты, как они были показаны – BodhiByte

 Смежные вопросы

  • Нет связанных вопросов^_^