0

如果我找到我想要的文本,我想扫描 logcat 活动并发布和事件。我试图接近这里:

记录 logcat 活动

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

4

1 回答 1

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();
}

然后在开始监听日志之前,List在 LogCat 监听器中填充 triggerPhrases。

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.
于 2013-05-07T22:10:05.877 回答