私は加速度計とgroデータを記録し、分析のためにテキストまたはCSVファイルに保存しようとしていますが、データをlog.iにストリームすることはできますが、ログ情報をテキストファイルに保存する方法を理解している。AccelecrometerとGryoのストリームデータをテキストファイルに保存する
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.mbientlab.metawear.AsyncOperation;
import com.mbientlab.metawear.Message;
import com.mbientlab.metawear.MetaWearBleService;
import com.mbientlab.metawear.MetaWearBoard;
import com.mbientlab.metawear.RouteManager;
import com.mbientlab.metawear.UnsupportedModuleException;
import com.mbientlab.metawear.data.CartesianFloat;
import com.mbientlab.metawear.module.Accelerometer;
import com.mbientlab.metawear.module.Debug;
import com.mbientlab.metawear.module.Gyro;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class MainActivity extends AppCompatActivity implements ServiceConnection ,Runnable{
private static final String LOG_TAG1="A",LOG_TAG="G", ACCEL_DATA="accel_data",GYRO_DATA="gyro_data";
private MetaWearBleService.LocalBinder serviceBinder;
private MetaWearBoard mwBoard;
private Accelerometer accelModule;
private Gyro gyroModule;
private Debug debugModule;
private String filename = "MySampleFile.txt";
private String filepath = "MyFileStorage";
File myInternalFile;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getApplicationContext().bindService(new Intent(this, MetaWearBleService.class), this, Context.BIND_AUTO_CREATE);
ContextWrapper contextWrapper=new ContextWrapper(getApplicationContext());
File directory=contextWrapper.getDir(filepath,Context.MODE_PRIVATE);
if(!directory.exists()){
directory.mkdir();
}
myInternalFile=new File(directory,filename);
//Start the Thread//
findViewById(R.id.start_accel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
t1.start();
t2.start();
}
});
//Stop Streaming Accelerometer and Gyro//
findViewById(R.id.stop_accel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
accelModule.stop();
gyroModule.stop();
}
});
findViewById(R.id.reset_accel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
debugModule.resetDevice();
}
});
//Save log file, Create a folder in internal storage//
findViewById(R.id.save_data).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
FileOutputStream fos= new FileOutputStream(myInternalFile);
fos.write(LOG_TAG1.getBytes());
fos.close();
Toast.makeText(getApplicationContext(), "record saved", Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
//Unbinding Bluetooth//
@Override
public void onDestroy(){
super.onDestroy();
getApplicationContext().unbindService(this);
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
serviceBinder = (MetaWearBleService.LocalBinder)service;
final String mwMacAdress= "F7:31:B8:53:9C:8F";
BluetoothManager btManager=(BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothDevice btDeveice= btManager.getAdapter().getRemoteDevice(mwMacAdress);
mwBoard=serviceBinder.getMetaWearBoard(btDeveice);
mwBoard.setConnectionStateHandler(new MetaWearBoard.ConnectionStateHandler() {
@Override
public void connected() {
super.connected();
Log.i(LOG_TAG,"Connected");
try {
accelModule = mwBoard.getModule(Accelerometer.class);
accelModule.setAxisSamplingRange(2.f);
accelModule.setOutputDataRate(50.f);
accelModule.routeData().fromAxes().stream(ACCEL_DATA).commit()
.onComplete(new AsyncOperation.CompletionHandler<RouteManager>() {
@Override
public void success(RouteManager result) {
result.subscribe(ACCEL_DATA, new RouteManager.MessageHandler() {
@Override
public void process(Message message) {
Log.i(LOG_TAG1, message.getData(CartesianFloat.class).toString());
}
});
}
});
debugModule=mwBoard.getModule(Debug.class);
} catch (UnsupportedModuleException e) {
Log.i(LOG_TAG,"cannot find module",e);
}
try {
gyroModule=mwBoard.getModule(Gyro.class);
gyroModule.setAngularRateRange(125.f);
gyroModule.setOutputDataRate(25.f);
gyroModule.routeData().fromAxes().stream(GYRO_DATA).commit()
.onComplete(new AsyncOperation.CompletionHandler<RouteManager>() {
@Override
public void success(RouteManager result) {
result.subscribe(GYRO_DATA, new RouteManager.MessageHandler() {
@Override
public void process(Message message) {
Log.i(LOG_TAG, message.getData(CartesianFloat.class).toString());
}
});
}
});
debugModule=mwBoard.getModule(Debug.class);
} catch (UnsupportedModuleException e){
Log.i(LOG_TAG,"cannot find module", e);
}
}
@Override
public void disconnected() {
Log.i(LOG_TAG,"Disconnected");
}
});
mwBoard.connect();
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
//Threading //
public void run() {
}
Thread t1 = new Thread() {
public void run() {
try {
accelModule.enableAxisSampling();
accelModule.start();
} catch (Exception e) {
}
}
};
Thread t2 = new Thread() {
public void run() {
try {
gyroModule.start();
}catch (Exception e){}
}
};
この回答は、「ファイルを追加する方法」の正しい方向を導くかもしれません:http://stackoverflow.com/questions/4542318/android-append -text-file – NSimon
Thans @NicolasSimon。私はリンクから、テキストファイルにログファイルを追加する必要があることを理解しました。 – AlphabateCoder
@ NicolasSimon私は、リンクから、私は[タグ:添付]テキストファイルのログファイルを理解する必要があります。私はJavaで非常に新しく、[タグ:log.i]を変数に格納するのに苦労しているので、[tag:osw.append]()で使用できるように教えてください。 – AlphabateCoder