我正在使用YuvImage
将android.hardware.Camera
Feed压缩为jpeg。从那时起,我一直在logcat中看到skia onFlyCompress
消息,这完全污染了它。有没有办法禁用此消息?我知道我可以过滤logcat输出,但这意味着一直到处都做,这不是一个修复,而是一个解决方法。我根本不想要打印这些消息
答案 0 :(得分:1)
您可以(我不确定)继承类YuvImage
的子类,它打印日志并覆盖打印日志的类的方法,只需复制该方法的所有代码,但Log.d()
或Log.v()
或Log.w()
,...已覆盖方法的代码。
请看以下答案:
答案 1 :(得分:1)
简短回答
尝试使用方法挂钩来实现目标。
您可以使用 XPosed Framework 来挂钩android.util.log
方法
在 ROOTed 设备上。
详细方法
android.util.Log
的方法。skia onFlyCompress
。setResult(null);
以防止它打印出日志消息。虽然这些方法只能在root设备上使用,但我希望我的回答可以帮助至少一些可以使用root设备的用户
(嗯,因为没有客户必须阻止日志消息,因此您只需要只
要查看阻止方法执行其余代码的示例: This answer(especially the last paragraph)包含一些使用Xposed框架的示例。如您所见,代码非常短(不超过40行。)
如果需要/看到可能有用,我会实现一些代码。
示例代码段
当有人支持我的时候,我认为有人喜欢我的建议。所以我发布了一些代码。
import android.util.*;
import de.robv.android.xposed.*;
import de.robv.android.xposed.callbacks.XC_LoadPackage.*;
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
public class LogFilterApp implements IXposedHookLoadPackage
{
private String TAG="LogFilter";
public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable
{
XposedBridge.log("Package name: " + lpparam.packageName);
try
{
findAndHookMethod("android.util.Log", lpparam.classLoader, "i", String.class, String.class, new XC_MethodHook()
{
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable
{
//do something before
if(((String)(param.args[1])).indexOf("skia onFlyCompress")>=0)
{
param.setResult(null);
}
}
});
}
catch (XposedHelpers.ClassNotFoundError e)
{
XposedBridge.log("ClassNotFoundError");
}
catch (NoSuchMethodError e)
{
XposedBridge.log("NoSuchMethodError");
}
}
}
}
}
代码参考:此XDA thread