OSDN Git Service

ちょっとだけ、preferenceの準備。
[gokigen/FujiCam.git] / app / src / main / java / net / osdn / gokigen / cameratest / logcat / LogCatUpdater.java
1 package net.osdn.gokigen.cameratest.logcat;
2
3 import java.io.BufferedReader;
4 import java.io.InputStreamReader;
5 import java.util.ArrayList;
6 import java.util.List;
7
8 class LogCatUpdater
9 {
10     LogCatUpdater()
11     {
12         //
13     }
14
15     /**
16      *
17      * @param ringbuffer : main - メイン ログバッファ, radio - 無線通信や電話に関連するメッセージが含まれるバッファ, events - イベントに関連するメッセージが含まれるバッファ
18      * @param logFormat : brief - 優先度 / タグとメッセージ発行元プロセスの PID, process - PID のみ, tag - 優先度 / タグのみ, raw - 生のログ, time - 日付、起動時刻、優先度 / タグ、メッセージ発行元プロセスの PID , threadtime - 日付、起動時刻、優先度、タグ、メッセージ発行元スレッドの PID および TID, long - すべてのメタデータ フィールド
19      * @param filterSpec :  レベル : SFEWIDV
20      * @param filterString : 指定した文字列がログに含まれている場合に表示
21      * @param filterRegEx :  指定した正規表現の文字列がログに含まれている場合に表示
22      * @return ログのリスト
23      */
24
25     List<String> getLogCat(String ringbuffer, String logFormat, String filterSpec, String filterString, String filterRegEx)
26     {
27         final int BUFFER_SIZE = 8192;
28         ArrayList<String> listItems = new ArrayList<String>();
29         try
30         {
31             ArrayList<String> commandLine = new ArrayList<String>();
32             commandLine.add("logcat");
33             commandLine.add("-d");       //  -d:  dump the log and then exit (don't block)
34             commandLine.add("-b");       //  -b <buffer> : request alternate ring buffer ('main' (default), 'radio', 'events')
35             commandLine.add(ringbuffer);  //     <buffer> option.
36             commandLine.add("-v");       //  -v <format> :  Sets the log print format, where <format> is one of:
37             commandLine.add(logFormat);   //                 brief process tag thread raw time threadtime long
38             commandLine.add(filterSpec);  //
39             Process process = Runtime.getRuntime().exec(commandLine.toArray(new String[commandLine.size()]));
40
41             BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()), BUFFER_SIZE);
42             String line;
43             do
44             {
45                 line = bufferedReader.readLine();
46                 try
47                 {
48                     int filterLength = filterString.length();
49                     int filterRegExLength = filterRegEx.length();
50                     if (((filterLength == 0)&&(filterRegExLength == 0))||
51                             ((filterLength > 0)&&(line.contains(filterString)))||
52                             ((filterRegExLength > 0)&&(line.matches(filterRegEx))))
53                     {
54                         listItems.add(line);
55                     }
56                 }
57                 catch (Exception ee)
58                 {
59                     ee.printStackTrace();
60                 }
61             } while (line != null);
62         }
63         catch (Exception e)
64         {
65             e.printStackTrace();
66         }
67         return (listItems);
68     }
69 }