0

我正在研究以某种方式将 GPS 位置存储在内部文件存储中,并以另一种方法按需检索它。

由于我是 Android 新手,我尝试了几种方法并决定使用 FileOutput-/InputStream,因为它对我来说更容易理解。我正在使用 Android 位置 API(http://developer.android.com/reference/android/location/Location.html)。我知道保存位置对象在技术上是通过将其写入字符串然后写入字节来实现的,但是如何加载保存的文件并返回保存的位置对象?

我的代码方法:

public void saveCurrentLocation(){ //method works, I can see the saved file in the file explorer
    Location currentLoc = gpsClass.getCurrentLocation(); //method within gpsClass that returns current location
    try {
        FileOutputStream fos = openFileOutput("SaveLoc", Context.MODE_PRIVATE);
        fos.write(currentLoc.toString().getBytes());
        fos.close();
    }
    catch(Exception e) { e.printStackTrace();}

}

public void loadSavedLocation() {
    Location savedLoc;
    try{
        BufferedReader inputReader = new BufferedReader(new InputStreamReader(openFileInput("SaveLoc")));
        String inputString;
        StringBuffer stringBuffer = new StringBuffer();
        while((inputString = inputReader.readLine()) != null) {
            stringBuffer.append(inputString);
    }
        gpsClass.update(??);
    }
    catch(Exception e) {e.printStackTrace();}
}

我想将 inputString 中的位置对象读数传递给“gpsClass.update()”,它只接受位置类型的变量。我是否必须使对象可序列化,如果是,如何?提前谢谢了!

4

1 回答 1

0

为什么不将您的位置对象保存到 SQLite 数据库中?或者是这样的:

节省:

FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(your object);
os.close();

加载:

FileInputStream fis = context.openFileInput(fileName);
ObjectInputStream is = new ObjectInputStream(fis);
YourClass yourObject = (YourClass) is.readObject();
is.close();
return yourObject;

这应该让你回到正轨

于 2013-10-22T14:03:22.290 回答