1.查看ClientID的命令
adb shell getprop ro.com.google.clientidbase
adb shell getprop |findstr ro.com.google.clientidbase
2.查看亮屏问题
关键词:sysui_status_bar_state screen_toggled onAuthenticated keyguardGoingAway
方法:sysui_status_bar_state(state|1,keyguardShowing|1,keyguardOccluded|1,bouncerShowing|1,secure|1,currentlyInsecure|1)
state:状态(0屏幕关闭1屏幕打开2锁屏) keyguardShowing:是否显示给用户(1显示0不显示) keyguardOccluded:是否属于活动状态(1:keyguard处于活动状态,但另一个活动正在遮挡它)
bouncerShowing:当前解锁界面是否先是给用户:1是0否 secure:用户是否设置安全解锁方法(PIN,密码):1是0否 currentlyInsecure:当前是否解锁:1是0否
screen_toggled:0表示屏幕关闭,1表示屏幕打开,2表示已锁屏 onAuthenticated ture指纹验证成功,false表示验证失败 keyguardGoingAway:表示锁屏界面隐藏
3.修改设置状态栏颜色与主界面颜色一致
platform/packages/apps/Settings / res/values/themes.xml
<style name="Theme.Settings" parent="Theme.SettingsBase">
<item name="android:statusBarColor">@android:color/white</item>
<style name="Theme.Settings.Home" parent="Theme.Settings.HomeBase">
<item name="android:statusBarColor">@android:color/white</item>
4.切换成深色主题后,点进设置中,状态栏为空白
修改对应项目values-night文件中themes属性 :/apps/Settings/res/values-night/themes.xml
<style name="Theme.SettingsBase" parent="@android:style/Theme.DeviceDefault.Settings" > 如果没有这个属性就增加
白天修改:/apps/Settings/res/values/themes.xml
<style name="Theme.SettingsBase" parent="@android:style/Theme.DeviceDefault.Settings">
<item name="android:statusBarColor">@android:color/white</item>
5.修改充电动效View的位置
有时候动效很快,为了方便抓动效的view在开发者模式中调低窗口动画,过度动画,Animator时长缩放 NotificationShade
拨号快捷键
*#6776# 查询PCB Number,手机的专案号就是PCB中00后面的一串值
*#8011# 启动oppo 的usb调试
*#391# 查询国家码
查看手机版本:adb shell getprop ro.boot.product.prjversion
adb shell getprop | findstr 217
adb shell cat /proc/oppoVersion/prjName
查看分辨率:adb shell wm size
查看当前焦点:adb shell dumpsys window |findstr mCurrent
adb shell dumpsys activity |findstr “mResume”
adb shell dumpsys window |findstr "mCurrentFocus"
adb shell dumpsys SurfaceFlinger :获取桌面显示数据
获取手机Settings.Secure.ANDROID_ID:adb shell settings get secure android_id
系统属性:adb shell getprop | findstr product
查看机型:adb shell getprop ro.product.model
获取系统版本:adb shell getprop ro.build.version.release
获取系统api版本:adb shell getprop ro.build.version.sdk
查看手机分辨率:adb shell dumpsys window displays(详细) adb shell wm size(简单)
获取设备名称:adb shell cat /system/build.prop
单编framework下的资源文件 make framework-res adb push framework-res.apk /system/framework
查看通知栏消息:adb shell dumpsys notification
对内容做查找:adb shell dumpsys notification | findstr tickerText
adb logcat -b all |grep notification
1.adb root
2.adb remount
3.adb shell pm enable com.android.systemui/com.android.systemui.tuner.TunerActivity
4.adb shell am start -n com.android.systemui/com.android.systemui.tuner.TunerActivity
5.此时进入了System UI Tuner界面,点击status bar,滑动到页面底部,点击time,选择显示时分秒,此时状态栏上的时间会显示“秒”
+++++++++++++++++++++++++++ 通知栏定制化开发 +++++++++++++++++++++++++++++
关键类:
NotificationManger NotificationManagerService EnqueueNotificationRunnable PostNotificationRunnable的处理 NotificationListeners
NotificationManger:
1)对smallicon的非空检验(Build.VERSION_CODES.LOLLIPOP_MR1以上版本),校验不通过报IllegalArgumentException("Invalid notification (no valid small icon),日志上有明显的提示,可以通过此条打印定位crash原因。
2)对LargeIcon压缩(若超过最大宽高MediaStyle(H:140dp W:280dp) BigPictureStyle(H:284dp W:416dp) 其他40dp),若未达到阀值则居中显示。
NotificationManagerService:
检验Caller是否合法(主要是针对多用户的非管理用户的限制)
参数是否合法(对nofiticaiton和packageName进行非空校验)
是否能被渲染(猜测是沉浸式状态栏相关设置,只有系统APP才可以设置)
保存通知状态(分为全局和根据Pakcagename区分的应用程序的)
校验ChannelId是否合法(ChannelId是否成功注册了)
封装Notification的相关信息到StatusBarNotification(实现Parcelable接口,用来给SystemUI传输数据)
创建NotificationRecord,用来保存framework层私有数据(也就是不发送给SystemUI的数据)和StatusBarNotification。简单理解就是所有的通知数据;
通知限制处理:
1):即时应用不允许发送通知;2):通知的刷新频率不能太快,并且进度条通知的进度不能大于或等于最大值;3):每个应用最多能同时存在50个通知
布局一:android:id/app_name_text图标旁文字 android:id/title android:id/text
布局二:com.android.systemui:id/header_label(头标题)
android:id/app_name_text android:id/time_divider android:id/time android:id/alerted_icon
android:id/title android:id/expand_button(扩展按钮) android:id/title com.android.systemui android:id/action0
android:id/notification_header android:id/app_ops(显示有几条信息)
com.android.systemui:id/notification_title(通知标题) com.android.systemui:id/notification_text(通知信息)
清空所有通知:com.android.systemui:id/clear_all_port
6.暗黑模式
mContext.getResources().getConfiguration().uiMode 获取当前Activity的模式
public static final int UI_MODE_NIGHT_YES = 0x20; 暗黑模式 UI_MODE_NIGHT_NO = 0x10;亮色模式
onConfigurationChanged 监听系统暗黑模式状态
public static boolean isNightMode(Context context) {
final int currentNightMode =
context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
7.【需求】【设置页面色差】标题栏和内容界面存在色差
修改类:com.android.settings.widget.EntityHeaderController
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
int color = Color.parseColor("#ffffff");
ColorDrawable drawable = new ColorDrawable(color);
actionBar.setBackgroundDrawable(drawable);