0

目的のテキストが見つかったら、logcat のアクティビティと投稿とイベントをスキャンしたいと思います。私はここにアプローチしようとしています:

logcat アクティビティのロギング

しかし、別のオブジェクトがそれを処理できるようにイベントを投稿するなど、ログで見つけたものに反応する方法を知りたいです。

4

1 に答える 1

1

あなたが言及した回答に投稿されたすべてのログメッセージの文字列を取得します。次に、正規表現を使用して文字列を検索します。

例えば、

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

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

編集

logcat を常に監視しようとしている場合、これはさらに困難になります。1 つには、プロセスが警告なしにシャットダウンされる可能性があります。そのため、実行を維持する方法、または実行されていることを常に確認する方法が必要です。

第 2 に、この場合、リンク先のソリューションは機能しません。これは、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();
}

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 に答える