如果找到所需的文字,我想扫描logcat活动以及发布和事件。我想在这里接近:
但我想知道如何对我在日志中找到的内容作出反应,例如发布事件以便其他对象可以处理它。
答案 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.