2012-11-30 2 views
0

내 응용 프로그램에 5 개의 고정 GPS 위치가 있습니다. 당신이 그들 가까이에 올 때, 그것은 응용 프로그램에 저장되며 어떤 종류의 메달을 해제합니다. 내 퀴즈와 메달에 SharedPreferences를 사용했지만 SharedPreferences에도 GPS를 저장하는 방법에 대해 조금 확신하지 못했습니다. 지금까지 내 코드입니다.SharedPreferences에 GPS 위치를 저장하는 방법 Android

package com.example.norskattraksjon; 

    import java.util.ArrayList; 

    import android.content.Context; 
    import android.content.SharedPreferences; 
    import android.location.Location; 
    import android.location.LocationListener; 
    import android.os.Bundle; 

    import com.google.android.maps.GeoPoint; 

    public class MyLocationListener implements LocationListener { 
private ArrayList<GeoPoint> gplist; 



public MyLocationListener(ArrayList<GeoPoint> gpList2) { 
    gplist = gpList2; 
} 



public void onLocationChanged(Location location) { 
    System.out.println("Den kommer hits"); 
    for(GeoPoint gp : gplist){ 

     //SÂ henter vi ut latitude og longitude. 
     //Det forvirrende her er at klassen "Location" bruker float-koordinater 
     //mens "GeoPoint" bruker mikrokoordinater. Dermed m man konvertere mellom de. 
     float latitude = (float) (gp.getLatitudeE6()/1E6); 
     float longitude = (float) (gp.getLongitudeE6()/1E6); 

     //Vi lager en "location" for hvert av punktene i gplist, utifra latitude og longitude. 
     Location test = new Location("tester"); 
     test.setLatitude(latitude); 
     test.setLongitude(longitude); 

     //location.distanceTo() er en metode som sjekker avstanden til punkter. 
     //Her skal distansen vÊre under 10 000 meter. 
     if(location.distanceTo(test) <= 70){ 
      //Om distansen er under 10 000m, s lager du en toast som gir den faktiske avstanden til punktet. 
      System.out.println("Her er du"); 


      SharedPreferences prefs = getSharedPreferences("com.example.norskattraksjon", 
        Context.MODE_PRIVATE); 

        // Lagre en tekst... først trenger vi en editor      
       SharedPreferences.Editor editor = prefs.edit(); 
       editor.putBoolean("location", true); 

        //Lagrer verdien 
        editor.commit();    

     }; 

    } 






    }; 

private SharedPreferences getSharedPreferences(String string, 
     int modePrivate) { 
    // TODO Auto-generated method stub 
    return null; 
} 

public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 
} 

public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 
} 

public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 
} 

} 

그리고 내 다른 일관된 코드입니다.

package com.example.norskattraksjon; 

    import java.util.ArrayList; 
    import java.util.List; 

    import android.content.Context; 
    import android.content.SharedPreferences; 
    import android.graphics.drawable.Drawable; 
    import android.location.LocationListener; 
    import android.location.LocationManager; 
    import android.os.Bundle; 
    import android.view.Menu; 

    import com.google.android.maps.GeoPoint; 
    import com.google.android.maps.MapActivity; 
    import com.google.android.maps.MapController; 
    import com.google.android.maps.MapView; 
    import com.google.android.maps.Overlay; 
    import com.google.android.maps.OverlayItem; 

    public class MainActivityMap extends MapActivity { 

private MapController mc; 
MapOverlays overlay; 
ArrayList<GeoPoint> gplist; 
List<Overlay> overlayList; 
LocationListener mlocListener; //Denne klassen lytter etter lokasjonen din 
    LocationManager mlocManager; //Mens denne kobler deg opp mot telefonens GPS. 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    System.out.println("WEEEEEEE"); 
    setContentView(R.layout.mapview); 


    MapView mapView = (MapView) findViewById(R.id.mapview); 
    mapView.setBuiltInZoomControls(true); 
    mapView.setSatellite(true); 

    mc = mapView.getController(); 
    gplist = new ArrayList<GeoPoint>(); 


    overlayList = mapView.getOverlays(); 
    Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher); 
    overlay = new MapOverlays(drawable, this); 
    double lat = 60.39403; 
    double lon = 5.330579; 

    GeoPoint point = new GeoPoint ((int) (lat * 1E6), (int) (lon*1E6)); 
    gplist.add(point); 
    OverlayItem punkt1 = new OverlayItem(point, "Du har kommet til!", "Domkyrkja i Bergen!"); 

    double lat2 = 60.702251; 
    double lon2 = 5.333685; 

    GeoPoint point1 = new GeoPoint ((int) (lat2 * 1E6), (int) (lon2 *1E6)); 
    gplist.add(point1); 
    OverlayItem punkt2 = new OverlayItem(point1, "Her ble", "Noen som drepte kongen begravd"); 

    double lat3 = 60.37829; 
    double lon3 = 5.335665; 

    GeoPoint point3 = new GeoPoint ((int) (lat3 * 1E6), (int) (lon3 *1E6)); 
    gplist.add(point3); 
    OverlayItem punkt3 = new OverlayItem(point3, "Her ble", "Himmelfarten med tran i maga!"); 

    double lat4 = 60.213789; 
    double lon4 = 5.369895; 

    GeoPoint point4 = new GeoPoint ((int) (lat4 * 1E6), (int) (lon4 *1E6)); 
    gplist.add(point4); 
    OverlayItem punkt4 = new OverlayItem(point4, "Her ble", "Flygelet skapt"); 

    double lat5 = 60.413619; 
    double lon5 = 5.37579; 

    GeoPoint point5 = new GeoPoint ((int) (lat5 * 1E6), (int) (lon5 *1E6)); 
    gplist.add(point5); 
    OverlayItem punkt5 = new OverlayItem(point5, "Her ble", "Bergensbakken bakt"); 

    overlay.addOverlay(punkt1); 
    overlay.addOverlay(punkt2); 
    overlay.addOverlay(punkt3); 
    overlay.addOverlay(punkt4); 
    overlay.addOverlay(punkt5); 
    overlayList.add(overlay); 

    mc.animateTo(point); 
    mc.setZoom(11); 

    //Dette er metoden man bruker for  koble opp til mobilens GPS 
     mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 

     //Her lager vi en instans av vÂr egen LocationListener. Dette gj¯r at vi kan bestemme selv hva som skjer 
     //nÂr man trykker p overlays. 
     mlocListener = new MyLocationListener(gplist); 

     //Her sier vi at vÂr LocationListener skal sp¯rre om GPS-signaler fra en GPS_PROVIDER. 
     //0 stÂr for minimumstiden mellom oppdateringer 
     //Den andre 0 stÂr for minimumsdistansen mellom oppdateringer 
     //mLocListener er instansen vi lagde av vÂr egen LocationListener. 
     mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 
} 

public GeoPoint newGeo(double x, double y){ 
    int a = (int) (x * 1E6); 
    int b = (int) (y * 1E6); 
    GeoPoint z = new GeoPoint(a,b); 
    return z; 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
} 
} 
+0

에 변경이 가해지지 않도록하십시오 ** 모든 ** 코드,하지만 단지 ** 관련 ** 부품 – Veger

답변

0
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context); 
    int latE6 = (int) (lat * 1e6); 
int lonE6 = (int) (lon * 1e6); 
    p.edit().putInt("Lat", latE6).commit(); 
    p.edit().putInt("Long", lonE6).commit(); 

위의 코드에서 위도와 경도는 위치의 위도와 경도입니다. 그들을 int 변수로 검색하고 1e6으로 다시 나누어 위치 값을 얻을 수 있습니다.

int lat= p.getInt("Lat", ""); 
int lon = p.getInt("Long", ""); 
0

다음과 같이 당신은 SharedPreference에 직접 위도 롱을 저장할 수 있습니다 :

SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context); 

p.edit().putString("Lat", YOUR_LATTITUDE).commit(); 
p.edit().putString("Long", YOUR_LONGITUDE).commit(); //SECURITY HAZARD: read below... 

그런 다음이처럼 검색 할 수 있습니다
String username = p.getString("Lat", ""); 
String password = p.getString("Long", ""); 

그것은 당신을 도울 것입니다 바랍니다.

0

이와 같은 방법으로 값을 매개 변수로 전달하십시오.

private void SavePreferences(String key, String value){ 
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString(key, value); 
    editor.commit(); 
    } 

오래 할 수 있습니다. 이

private void SavePreferences(String key, long value) 
editor.putInt(key,value) 
+0

이 질문에 다 큰 노력에 대한 여러분 모두 감사합니다. 매우 감사! – DeSoto

관련 문제