Telephony模块中的Log使用

一、Android原生android.util.Log类

Android原生的Log类是http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/java/android/util/Log.java#144

最终会调用native方法,传递的参数有:bufID(对应不同的MAIN/RADIO/EVENTS/SYSTEM/CRASH buffer), priority(VERBOSE < DEBUG < INFO < WARN < ERROR, 默认大于等于INFO的log会被打印出来,其它等级的log可以通过log.tag.LOG_TAG = VERBOSE等方法打开)

144    public static int d(String tag, String msg) {
145        return println_native(LOG_ID_MAIN, DEBUG, tag, msg);
146    }


373    /** @hide */ public static native int println_native(int bufID,
374            int priority, String tag, String msg);

我们可以通过如下两种方式使用:

  • import导包+调用Log.d

http://androidxref.com/9.0.0_r3/xref/packages/services/Car/tests/DefaultStorageMonitoringCompanionApp/src/com/google/android/car/defaultstoragemonitoringcompanionapp/ExcessiveIoIntentReceiver.java

7import android.util.Log;


15            Log.d(TAG, "excessive I/O activity detected.");

http://androidxref.com/9.0.0_r3/xref/packages/apps/Browser2/src/org/chromium/webview_shell/StartupTimeActivity.java#27

27        android.util.Log.i("WebViewShell", "WebViewStartupTimeMillis=" + (t2 - t1));

 

二、TeleService,Telecom,Dialer里的自定义Log

1. TeleService

不导包,直接默认会调用同包下的Log(TeleService - > framework):

android.services.telephony.Log#d -> android.telecom.Log#d

其间,会调用到原生的Log#isLoggable判断Log的等级情况(方法见上)

http://androidxref.com/9.0.0_r3/xref/packages/services/Telephony/src/com/android/services/telephony/TelephonyConnection.java

105                    Log.v(TelephonyConnection.this, "MSG_PRECISE_CALL_STATE_CHANGED");

http://androidxref.com/9.0.0_r3/xref/packages/services/Telephony/src/com/android/services/telephony/Log.java#24

51    public static void d(String prefix, String format, Object... args) {
52        android.telecom.Log.d(prefix, format, args);
53    }

http://androidxref.com/9.0.0_r3/xref/frameworks/base/telecomm/java/android/telecom/Log.java#80

51    public static String TAG = "TelecomFramework";
52    public static boolean DEBUG = isLoggable(android.util.Log.DEBUG);
53    public static boolean INFO = isLoggable(android.util.Log.INFO);
54    public static boolean VERBOSE = isLoggable(android.util.Log.VERBOSE);
55    public static boolean WARN = isLoggable(android.util.Log.WARN);
56    public static boolean ERROR = isLoggable(android.util.Log.ERROR);


80    public static void d(String prefix, String format, Object... args) {
81        if (sIsUserExtendedLoggingEnabled) {
82            maybeDisableLogging();
83            android.util.Slog.i(TAG, buildMessage(prefix, format, args));
84        } else if (DEBUG) {
85            android.util.Slog.d(TAG, buildMessage(prefix, format, args));
86        }
87    }


367    public static boolean isLoggable(int level) {
368        return FORCE_LOGGING || android.util.Log.isLoggable(TAG, level);
369    }

【注意】

如果在TelephonyConnection里使用原生的Log类,要小心导包和调用Log方法两两配合使用,否则会出现异常。

 

2. Telecom

导包

http://androidxref.com/9.0.0_r3/xref/packages/services/Telecomm/src/com/android/server/telecom/CallsManager.java#47

47import android.telecom.Log;


488        Log.v(this, "onSuccessfulOutgoingCall, %s", call);

 

3. Dialer

同TeleService, 如果不声明导包,默认使用同包下的http://androidxref.com/9.0.0_r3/xref/packages/apps/Dialer/java/com/android/incallui/Log.java

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值