私は Android プログラミングが初めてで (最終年度のプロジェクトのために始めたばかりです)、現在のタスクに問題があります。Sphero の IMU にアクセスして、データをテキスト ファイルに出力しようとしています。Android アプリの作成方法とhttps://github.com/orbotix/Sphero-Android-SDKから入手したサンプルをいじる方法を学んだ後は、データを Android デバイスにストリーミングすることはそれほど問題ではありませんでした。
しかし、私は解決できないように見える出力データからテキストへのフェーズに行き詰まっていました。DataOutputStream およびその他の出力ストリーム メソッド (バッファ、バイトなど) を使用して、文字列メッセージおよび配列のテキスト ファイルを出力する方法を理解することができました。しかし、スフェロ加速度計ストリーミングからデータを出力する場合、アプリがエラーでクラッシュし続けるため、ファイルを出力できませんでした。
原因: java.lang.NullPointerException: null オブジェクト参照で仮想メソッド 'java.util.ArrayList com.orbotix.async.DeviceSensorAsyncMessage.getAsyncData()' を呼び出そうとしています
問題を引き起こしていると思われる出力部分は次のとおりです。
public void write_data() {
double accelX = ((DeviceSensorAsyncMessage) asyncMessage).getAsyncData().get(0).getAccelerometerData().getFilteredAcceleration().x;
ArrayList arrayList = new ArrayList();
while (running == true) {
arrayList.add(accelX);
Toast.makeText(getApplicationContext(), "File Open", Toast.LENGTH_LONG).show();
int sz = arrayList.size();
for (int i = 0; i < sz; i++) {
try {
DataOutputStream dos = new DataOutputStream(new FileOutputStream(output_file, true));
dos.writeUTF("" + arrayList);
dos.writeChars("\n");
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Unable to copy data", Toast.LENGTH_LONG).show();
//e.printStackTrace();
}
}
try {
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
過去の問題から NullPointException エラーをまだ理解していないため、出力方法が間違っているという事実についてはわかりません。誰かアドバイスをお願いします。アドバイスをいただければ幸いです。