如何保存所采用的网络位置?

时间:2012-03-16 13:40:44

标签: android geolocation sd-card

            package com.locatn;

            import java.io.File;
            import java.io.IOException;
            import java.io.OutputStream;
            import java.io.OutputStreamWriter;
            import java.io.Writer;

            import android.app.Activity;
            import android.content.Context;

            import android.location.LocationManager;
            import android.os.Bundle;
            import android.os.Environment;

                import android.widget.Toast;

                public class Location extends Activity {
                    private LocationManager locationManagerNetwork;


                    @Override
                    public void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.main);


                    locationManagerNetwork = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                    android.location.Location location2 = locationManagerNetwork
                                    .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                 if (location2 != null) {   `enter code here`    
                            String message = String
                                    .format("Yout location : \n Longitude: %1$s \n Latitude: %2$s",
                                            location2.getLongitude(), location2.getLatitude());
                            Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG)
                                    .show();
  

//我在这段代码的保存部分遇到很多错误             朋友请帮我纠正这段代码。             我想将获取的位置信息保存为txt文件并将其保存到SD卡。            请帮帮我朋友..... //

// following are the errors //

                 // Illegal modifier for the local class WriteTextFileExample; only abstract or final is permitted //   
                    *public class WriteTextFileExample{
// The method main cannot be declared static; static methods can only be declared in a static or top level type //
                          public static void main(String[] args)throws IOException{
                          Writer output = null;

                          File sdcard = Environment.getExternalStorageDirectory();
                          File file = new File("/sdcard/andsecure/mysdfile.txt");
// Multiple markers at this line //
    // - BufferedWriter cannot be resolved to a type //
    // - BufferedWriter cannot be resolved to a type //
    // - Cannot refer to a non-final variable location2 inside an inner class defined in a different // 
     // method - FileWriter cannot be resolved to a type //
                          output = new BufferedWriter(new FileWriter(location2));
// text cannot be resolved to a variable //
                          output.write(text);
                          output.close();***

                          }
                         }


                           }
                         }


                   }

1 个答案:

答案 0 :(得分:1)

您正在尝试将Location对象写入File。这不起作用,因为您必须先将其转换为某种类型的字符串。如果您稍后尝试阅读此Location,则可以考虑保存Location对象的JSON表示。

我建议Gson,因为它使序列化非常容易:

Gson gson = new Gson();
JsonObject json = gson.toJson(location2);
String text = json.toString();