いつもお世話になっております。
Android端末の中にlogcatを出力、保存したいと考えています。
ネットで検索し、それをkotlin変換したソースが以下です。
Kotlin
1 2class WriteLogThread(private val context: Context) : Thread() { 3 4 @Override 5 fun run() { 6 var proc: java.lang.Process? = null 7 var reader: BufferedReader? = null 8 var writer: PrintWriter? = null 9 10 val pId = Integer.toString(Process.myPid()) 11 12 try { 13 proc = Runtime.getRuntime().exec(arrayOf("logcat", "-v", "time")) 14 reader = BufferedReader(InputStreamReader(proc!!.getInputStream()), 1024) 15 var line: String 16 while (true) { 17 line = reader!!.readLine() 18 if (line.length() === 0) { 19 try { 20 Thread.sleep(200) 21 } catch (e: InterruptedException) { 22 } 23 24 continue 25 } 26 27 if (line.indexOf(pId) !== -1) { 28 29 try { 30 val out: OutputStream 31 out = context.openFileOutput("log.text", Context.MODE_PRIVATE or Context.MODE_APPEND) 32 writer = PrintWriter(OutputStreamWriter(out, "UTF-8")) 33 writer!!.println(line) 34 } catch (e: Exception) { 35 e.printStackTrace() 36 } finally { 37 if (writer != null) { 38 writer!!.close() 39 } 40 } 41 42 } 43 } 44 } catch (e: IOException) { 45 e.printStackTrace() 46 } finally { 47 if (reader != null) { 48 try { 49 reader!!.close() 50 } catch (e: IOException) { 51 e.printStackTrace() 52 } 53 54 } 55 } 56 } 57}
上記の変換で大丈夫そうでしょうか。
また、このソースはWriteLogThread.ktというファイルで保存でOKなのでしょうか。
それと、これをメインからキックするコードもKotlin対応したいのですが
Thread wreiteLogThread = new WriteLogThread(getApplicationContext()); wreiteLogThread.start();
いまひとつ、どう変換すればよいのかわかりません。
かつ、どの辺りに追加記入してキックすればよいのかも教えていただけると助かります。
重ね重ねの質問で申し訳ありませんが、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。