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();}
}

入力文字列の位置オブジェクトの読み出しを、タイプ Location の変数のみを受け取る "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 に答える