如果我找到我想要的文本,我想扫描 logcat 活动并发布和事件。我试图接近这里:
但我想知道如何对我在日志中找到的内容做出反应,例如发布一个事件以便另一个对象可以处理它。
获取您提到的答案中发布的所有日志消息的字符串。然后,只需使用正则表达式搜索字符串。
例如,
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.