如何根据找到的文本扫描logcat输出和发布事件?

时间:2013-05-07 22:06:45

标签: android events logcat

如果找到所需的文字,我想扫描logcat活动以及发布和事件。我想在这里接近:

Logging logcat activity

但我想知道如何对我在日志中找到的内容作出反应,例如发布事件以便其他对象可以处理它。

1 个答案:

答案 0 :(得分: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是一个简单的类,它有一个String短语成员变量和一个实现回调函数的对象。

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.