1

Bluetoothモジュールから来て(HandleRead)から読み取ったアレイのストリームを内部ストレージに直接書き込もうとしています。そもそもそんなことありえるの?毎秒 100 サンプルを読み取っていることに注意してください。つまり、ファイルがすぐにいっぱいになります。ストレージに詳しくないので、コードが期待どおりに実行されません。

public class MainActivity extends ActionBarActivity implements SensorEventListener {
    File Root = Environment.getExternalStorageDirectory();
    File Dir = new File (Root.getAbsolutePath()+"/myAppFile");
    File file = new File(Dir,"Message.txt"); 

    @Override
    protected void onCreate(Bundle savedInstanceState){
        String state;
        state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state)){
            if (!Dir.exists()){
                Dir.mkdir();
            }
        }

        private void handleRead(Message msg) {
            byte[] readBuf = (byte[]) msg.obj;    
            String readMessage = new String(readBuf);
            ByteBuffer buffer = ByteBuffer.wrap(readBuf, 0, readBuf.length);
            buffer.order(ByteOrder.BIG_ENDIAN);
            buffer.clear();

            final String[] strNumbers = readMessage.split("\n");

            for (int j = 1; j <= strNumbers.length - 2; j++) {
                pressure = Integer.parseInt(readMessage2);
                MyFinalPressure = (float) (9.677 +0.831 * pressure);
                // trying to store directly to internal sotrage
                activity.save.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        try {
                            FileOutputStream fileOutputStream = new FileOutputStream(activity.file);
                            fileOutputStream.write((int) MyFinalPressure);
                            fileOutputStream.close();

                            Toast.makeText(activity.getApplicationContext(),"Message saved ", Toast.LENGTH_SHORT).show();
                        } catch (FileNotFoundException e){
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                });
            }
        }
    }
}
4

1 に答える 1