Я использую YuvImage
для сжатия канала android.hardware.Camera
в jpeg. С тех пор я продолжаю видеть сообщения skia onFlyCompress
в logcat, что полностью загрязняет его. Есть ли способ отключить это сообщение? Я знаю, что могу отфильтровать вывод logcat, но это означает, что это происходит повсюду все время, что не является исправлением, а обходным путем. Я просто не хочу, чтобы эти сообщения печатались вообще
Удалить сообщение onFlyCompress из logcat
Ответ 1
Вы можете (я не уверен) YuvImage
подкласс класса YuvImage
который печатает журнал, и переопределить метод этого класса, который печатает журнал, и просто скопировать весь код этого метода, кроме Log.d()
или Log.v()
или Log.w()
,... код переопределенного метода.
Посмотрите на следующий ответ тоже:
Ответ 2
Короткий ответ
Попробуйте достичь своей цели с помощью метода перехвата.
Вы можете подключить методы android.util.log
используя XPposed Framework на устройствах ROOTed.
Подробные методы
- Используйте XPposed Framework для подключения методов
android.util.Log
. - В методе перехвата проверьте, содержит ли сообщение
skia onFlyCompress
. - Если тогда вызовите
setResult(null);
чтобы он не распечатывал сообщение журнала.
Хотя эти методы можно использовать только на корневых устройствах, но я надеюсь, что мой ответ поможет, по крайней мере, некоторым пользователям, которые могут использовать корневые устройства.
(Хм, потому что никакие клиенты не будут блокировать сообщения журнала, так что все, что вам нужно сделать, это просто корень локального устройства только и установить приложение автоматической фильтрации, которая использует рамки Экспоузд.)
Чтобы увидеть пример блокировки метода от выполнения остальной части его кода: Этот ответ (особенно последний абзац) содержит несколько примеров использования платформы 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