2013-05-07 22 views
0

我想掃描logcat活動和帖子和事件,如果我找到我想要的文本。我想在這裏的做法:如何根據找到的文本掃描logcat輸出併發布事件?

Logging logcat activity

,但我想知道如何以我在日誌中找到,如張貼事件使另一個對象可以處理它反應。

+0

你必須更具體地說明你想做什麼。你打算讓掃描運行一次嗎?你是否希望它一直在運行(更復雜)? – you786 2013-05-07 22:08:19

+0

我想在後臺連續運行它,掃描我想要的子字符串,然後在找到它們時發佈事件。 – gonzobrains 2013-05-07 22:40:36

回答

1

獲取所提供的答案中發佈的所有日誌消息的字符串。然後,只需使用正則表達式搜索字符串即可。

例如,

String result = //... get the logs ... 

if(result.contains("trigger text i am looking for")){ 
    myObject.raiseEvent(); 
} 

編輯

如果你正在嘗試做的logcat的持續監測,這將是困難得多。首先,這個過程可能會在沒有警告的情況下關閉。所以你需要一種方法來保持它運行,或不斷檢查它正在運行。

其次,在這種情況下,您鏈接的解決方案將不起作用,因爲它會等待,直到調用stopLogging,然後返回記錄間隔的整個日誌。

此外,您必須修改該代碼,以便它具有要運行的觸發器字詞及其關聯的回調函數的列表。

while ((line = reader.readLine()) != null){ 
for(int i =0; i < triggerList.size(); i++){ 
    TriggerPhrase trigger = triggerList.get(i); 
    if(line.contains(trigger.phrase)) 
    { 
    trigger.onTriggerPhrase(line); 
    } 
} 
} 

其中TriggerPhrase是一個簡單的類,有一個字符串短語成員變量和實現的回調函數的對象。

public static class TriggerPhrase implements TriggerListener{ 
    String phrase; 
    TriggerListener callback; 
} 

public interface TriggerListener{ 
    public void onTriggerPhrase(); 
} 

然後你開始聽日誌之前,填充在logcat的聽者triggerPhrases List

TriggerPhrase monkeyPhrase = new TriggerPhrase(); 
monkeyPhrase.phrase = "monkeys"; 
monkeyPhrase.callback = new TriggerListener(){ 
    public void onTriggerPhrase(){ 
    notifyUser("found the phrase `monkeys` in the logcat"); 
    } 
}; 
triggerPhrases.add(monkeyPhrase); 
//etc. 
+0

我正在尋找更多有關事件提升部分的細節。我需要知道如何爲其正在查找的文本另存對象註冊,以及如何通知它已被找到。 – gonzobrains 2013-05-07 22:42:43

+0

@gonzobrains給了很多更多的細節 – you786 2013-05-08 00:46:34

+0

我現在會試試這個。有沒有什麼特別的我需要做的,以便從我的應用程序啓動的地步獲取logcat信息,而且什麼都沒有? – gonzobrains 2013-05-08 01:11:25

相關問題