0
private void writeToFile(String data) {
try {
    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("DataWriteTry.txt", Context.MODE_PRIVATE));
    outputStream.write(data);
    outputStreamWriter.close();
    }

我试过这段代码,用一个按钮写数据,但没有用。

writeToFile(getText(loc.getAltitude()));

我用 getText、String 和定义的 textView 尝试了“writeToFile”。如何使用按钮或每 15 分钟自动写入此数据?

4

4 回答 4

0

从您的问题来看,您似乎对Android一无所知,并且您正在尝试制作一个需要中级知识的应用程序。无论如何,您可以在 中写入文件onLocationChanged,该方法将在您在 中指定的时间和距离后调用requestLocationUpdates()

于 2013-07-30T23:06:10.910 回答
0

您可以指定一个Android 警报或一个TimerTask附带的Timer.

于 2013-07-30T22:59:48.380 回答
0

这是我的做法

            FileWriter fw = new FileWriter(Environment.getExternalStorageDirectory()+"/myfile.txt", false);
            BufferedWriter br = new BufferedWriter(fw);
            br.append(data);
            br.close();
            fw.close();

该文件保存在您的外部存储根目录中

尝试更改此行

writeToFile(getText(loc.getAltitude()));

writeToFile(String.valueOf(loc.getAltitude()));

好的,您可以通过设置类变量来解决这个问题

Location location = null;

然后在你的 onLocationChanged 回调中像这样设置类变量位置

this.location = loc;

然后你可以打电话

writeToFile(String.valueOf(location.getAltitude()));

从您的 onClick 回调

于 2013-07-30T23:02:16.290 回答
0
  1. 为了得到位置,你必须等到你从位置传感器得到一个,所以它不能使用按钮。唯一与此类似的事情是获取已知的最后一个位置,但这可能离真实位置很远,或者只是返回 null。

  2. 为了每 15 分钟写入一个文件,有很多方法。最简单的方法是使用 AlarmManager 来安排事件,并将位置附加到文件中。

    另一种可能的方法是使用前台服务来保持您的应用程序处于活动状态,并请求位置传感器每 15 分钟通知一次新位置。

  3. 谷歌已经发布了一个很好的 API 可以与他们的播放服务一起使用(链接在这里),它比使用普通的位置传感器(电池、速度、准确性……)有很多优势。

于 2013-07-30T23:03:21.147 回答