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分钟自动写入此数据?
答案 0 :(得分:0)
您可以指定Android Alarms或TimerTask
并附带Timer
。
答案 1 :(得分: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回调的
答案 2 :(得分:0)
为了获得位置,你必须等到从位置传感器拿到一个,所以它不能使用按钮。唯一类似的事情是获取已知的最后一个位置,但这可能离真实位置很远或只返回null。
为了每15分钟写一个文件,有很多方法。最简单的方法是使用AlarmManager来安排事件,并将该位置附加到文件中。
另一种可能的方法是使用前台服务让您的应用程序保持活动状态,并且每隔15分钟就会从位置传感器请求通知新位置。
谷歌发布了一个很好的API,可以与他们的播放服务(链接here)一起使用,与使用普通的位置传感器(电池,速度,准确度......)相比,它有许多优点。
答案 3 :(得分:0)
从您的问题判断,看起来您对Android没有任何了解,并且您正在尝试制作需要中级知识的应用。无论如何,您可以在onLocationChanged
中写入该文件,此方法将在requestLocationUpdates()
中指定的时间和距离之后调用。