###やりたいこと
200ms毎に時間を取得し、csvに追記するプログラムを作りたいです。
取得開始~終了タイミングは特に指定していない為、アプリを起動してから終了させるまでひたすら時間を取得して一定の間隔で書き込み続けることになると思いますが、一定間隔で処理を実行するテスト用に作成したものなのでその点はあまり重要視していません。
ただし、それが原因となっておかしくなっている場合はご指摘願いたいです。
起きている問題
handler.post(runnable);の部分でシンボル”post”が解決できませんというメッセージとともに波線が出ているのですが、runnebleのスコープ範囲内で呼び出しを行っていると思うのでなぜ解消されないのかわかりません。
この方の記事を参考にしています
Qiita Androidで処理を指定した時間間隔ごとに実行するコードのフォーマットを記載します。
コード
java
1package to.msn.wings.csvsavetest; 2 3import androidx.appcompat.app.AppCompatActivity; 4import java.io.FileOutputStream; 5import java.util.Calendar; 6import java.text.SimpleDateFormat; 7import android.content.Context; 8import android.os.Bundle; 9import android.os.Handler; 10 11public class MainActivity extends AppCompatActivity { 12 13 String filename = "Test.csv"; 14 String output = "date\n"; 15 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_main); 20 } 21 22 23 Handler handler = new Handler(); 24 Runnable runnable = new Runnable(){ 25 public void run() { 26 writeData(); 27 handler.removeCallbacks(runnable); 28 handler.postDelayed(runnable,200); 29 30 } 31 }; 32 handler.post(runnable);//runメソッドの初回呼び出し用、2回目以降はrun内のpostDelayedで実行 33 34 35 public void writeData(){//ファイルに書き込むメソッド 36 37 Calendar c = Calendar.getInstance(); 38 SimpleDateFormat sdf = new SimpleDateFormat("yy.MM.dd_HH:mm:ss:SSS");//日付の表示形式を設定(フォーマットを設定) 39 output += sdf.format(c.getTime()+"\n"); 40 41 FileOutputStream outputStream; 42 try { 43 outputStream = openFileOutput(filename, Context.MODE_PRIVATE); 44 outputStream.write(output.getBytes()); 45 outputStream.close(); 46 } catch (Exception e) { 47 e.printStackTrace(); 48 } 49 } 50} 51
回答1件
あなたの回答
tips
プレビュー