【问题标题】:Not able to write acclerometer data onto a text file that I created - Android无法将加速度计数据写入我创建的文本文件 - Android
【发布时间】:2015-03-01 07:49:20
【问题描述】:

我创建了一个简单的应用程序。我想将加速度计数据写入我创建的文本文件中。我使用了以下代码 sn-p,但是当我检查我的文件时,我无法获取其中写入的值。我不确定我做错了什么。 提前谢谢你

P.S 我是 Android 新手

    package com.example.walkpatteranalyser;

import com.example.walkpatteranalyser.R;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import android.R.string;
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Toast;


public class MainActivity extends Activity implements SensorEventListener {

    private SensorManager mSensorManager; 
    private Sensor mAccelerometer;
    private FileWriter Writer;

    char co_or_x;
    char co_or_y;
    char co_or_z;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    }

    public void onStartClick(View view) {
        mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
        Toast.makeText(getApplicationContext(), "Started writing to myfile.txt", Toast.LENGTH_SHORT).show();
    }

    public void onStopClick(View view) {
        mSensorManager.unregisterListener(this);
        Toast.makeText(getApplicationContext(), "Stopped", Toast.LENGTH_SHORT).show();
    }
    protected void onResume() {
        super.onResume();

    }

    protected void onPause() {
        super.onPause();

        if( Writer != null) {
           try {
            Writer.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }
}

    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub

        float x = event.values[0];
        float y = event.values[1];
        float z = event.values[2];


        try {

            File root = new File(Environment.getExternalStorageDirectory(), "Accleration_Data");
            if (!root.exists()) {
                root.mkdirs();
            }

//            BufferedWriter out = new BufferedWriter(new FileWriter("text.txt"));
//            out.write(Float.toString(event.values[0]) + Float.toString(event.values[1]) + Float.toString(event.values[2]) );
//            out.close();
            File gpxfile = new File(root, "text.txt");
            FileWriter writer = new FileWriter(gpxfile);
    //        writer.append(sBody);
            BufferedWriter out = new BufferedWriter(new FileWriter("text.txt"));
            out.write(Float.toString(event.values[0]) + Float.toString(event.values[1]) + Float.toString(event.values[2]) );
            out.close();
//          writer.flush();
//          writer.close();
            Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub

    }
}

【问题讨论】:

  • 您收到“已保存”的祝酒词了吗?另外,您为什么要尝试将加速度计数据写入文件?还有一件事...... onSensorChanged 事件可以很快到来,而且你有很多事情要做......
  • 不,我没有得到“已保存”的吐司。我正在尝试编写加速度计数据以在行走时获得一些加速度计模式。但我可以在其中创建一个文件夹“Accleration_Data”以及一个“text.txt”文件。无法将传感器数据写入文件。
  • 你打算在你的代码中读取这个文件,处理它,并让它决定某些功能是如何工作的吗?或者,您只是想查看数据进行分析?如果您只想查看数据,最好的方法是记录数据,然后保存日志以供分析。
  • 我只想用它来分析。好的,谢谢 Daniel Nuget。
  • 如果您还想尝试让文件写入工作,请参阅下面的答案。还有一些方法可以通过在应用启动时启动 shell 脚本将日志写入 sdcard 上的文件。

标签: android file-io


【解决方案1】:

看起来主要问题是您没有使用 ExternalStorageDirectory file.txt。您可能正在将其写入内部存储。

试试这个:

        File root = new File(Environment.getExternalStorageDirectory(), "Accleration_Data");
        if (!root.exists()) {
            root.mkdirs();
        }  
        File gpxfile = new File(root, "text.txt");
        FileWriter writer = new FileWriter(gpxfile.getAbsoluteFile());

        BufferedWriter out = new BufferedWriter(writer);
        out.write(String.format("%-10f %-10f %-10f", event.values[0], event.values[1], event.values[2] ));
        out.close();

        Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();

【讨论】:

猜你喜欢
  • 2017-06-10
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多