android拷机工具,【AndroidFramework】【EMMC拷机】混合拷机时盒子待机

2023-05-16

【AndroidFramework】【EMMC拷机】混合拷机时盒子待机

问题结论

暂时确定为误按键,不是故障。问题关闭。后续完全保证无按键(物理隔离)情况下如果出现待机,请反馈。

问题描述

【EMMC拷机】混合拷机时盒子待机---新版本引入

EMMC:东芝THGBMFG6C1LBAIL 容量为8GB

【故障描述】

1,拷机10台,全部杀了遥控器,拷机播放13H后发现一台出现问题

2,混合拷机时盒子待机

分析详细

grep确认事件现场

确认日志产生机制

确认盒子待机按钮

确认自动待机接口

确认测试部“杀遥控器”方法

grep确认事件现场

拿到日志有53份,每份102400k,先放在服务器上,grep一下,结果如下:

wanghongzhu@ubuntu:~/temp/182.16.90.24_2019-06-17-17-17-58$ grep 'sleep' * -nir

Log_2019-06-17-17-17-58_53.log:467677:2019-06-17 21:00:29.344 I/PowerManagerService( 3246): Going to sleep due to power button (uid 1000)...

Log_2019-06-17-17-17-58_53.log:467683:2019-06-17 21:00:29.344 I/PowerManagerService( 3246): Sleeping (uid 1000)...

Log_2019-06-17-17-17-58_53.log:481099:2019-06-17 21:00:32.464 I/TV_Client.TagTv( 4374): [4585][playermgr.cpp (L7160)][StopallTVplay]:---[0]---iPlayerID[0];joinchannel is NOT running!exit Sleep!

wanghongzhu@ubuntu:~/temp/182.16.90.24_2019-06-17-17-17-58$ grep 'screen off' * -nir

Log_2019-06-17-17-17-58_53.log:467687:2019-06-17 21:00:29.344 I/DisplayPowerController( 3246): Blocking screen off

Log_2019-06-17-17-17-58_53.log:467689:2019-06-17 21:00:29.344 I/DisplayPowerController( 3246): Unblocked screen off after 1 ms

Log_2019-06-17-17-17-58_53.log:468063:2019-06-17 21:00:29.547 D/PowerManagerService-JNI( 3246): Excessive delay in setInteractive(false) while turning screen off

结果显示,待机只发生在最后一份日志,并且显示为power button,结果基本明晰。接下来,

1.确认框架代码,什么情况下会出现该打印(遥控器按到了?其他未知原因调用到了?)

2.是不是碰到盒子上‘待机按钮’引起的

3.是不是什么apk调用了自动待机的接口?

确认日志产生机制

代码路径/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java

/frameworks/base/services/core/java/com/android/server/power$ cat PowerManagerService.java |grep -nir 'Going to sleep due to'

PowerManagerService.java:1407: Slog.i(TAG, "Going to sleep due to device administration policy "

PowerManagerService.java:1411: Slog.i(TAG, "Going to sleep due to screen timeout (uid " + uid +")...");

PowerManagerService.java:1414: Slog.i(TAG, "Going to sleep due to lid switch (uid " + uid +")...");

PowerManagerService.java:1417: Slog.i(TAG, "Going to sleep due to power button (uid " + uid +")...");

PowerManagerService.java:1420: Slog.i(TAG, "Going to sleep due to sleep button (uid " + uid +")...");

PowerManagerService.java:1423: Slog.i(TAG, "Going to sleep due to HDMI standby (uid " + uid +")...");

跳转到打印处,调用的方法,梳理逻辑。

// This method is called goToSleep for historical reasons but we actually start

// dozing before really going to sleep.

@SuppressWarnings("deprecation")

private boolean goToSleepNoUpdateLocked(long eventTime, int reason, int flags, int uid) {

if (DEBUG_SPEW) {

Slog.d(TAG, "goToSleepNoUpdateLocked: eventTime=" + eventTime

+ ", reason=" + reason + ", flags=" + flags + ", uid=" + uid);

}

if (eventTime < mLastWakeTime

|| mWakefulness == WAKEFULNESS_ASLEEP

|| mWakefulness == WAKEFULNESS_DOZING

|| !mBootCompleted || !mSystemReady) {

return false;

}

Trace.traceBegin(Trace.TRACE_TAG_POWER, "goToSleep");

try {

switch (reason) {

case PowerManager.GO_TO_SLEEP_REASON_DEVICE_ADMIN:

Slog.i(TAG, "Going to sleep due to device administration policy "

+ "(uid " + uid +")...");

break;

case PowerManager.GO_TO_SLEEP_REASON_TIMEOUT:

Slog.i(TAG, "Going to sleep due to screen timeout (uid " + uid +")...");

break;

case PowerManager.GO_TO_SLEEP_REASON_LID_SWITCH:

Slog.i(TAG, "Going to sleep due to lid switch (uid " + uid +")...");

break;

case PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON:

Slog.i(TAG, "Going to sleep due to power button (uid " + uid +")...");

break;

case PowerManager.GO_TO_SLEEP_REASON_SLEEP_BUTTON:

Slog.i(TAG, "Going to sleep due to sleep button (uid " + uid +")...");

break;

case PowerManager.GO_TO_SLEEP_REASON_HDMI:

Slog.i(TAG, "Going to sleep due to HDMI standby (uid " + uid +")...");

break;

case PowerManager.GO_TO_SLEEP_REASON_ACCESSIBILITY:

Slog.i(TAG, "Going to sleep by an accessibility service request (uid "

+ uid +")...");

break;

default:

Slog.i(TAG, "Going to sleep by application request (uid " + uid +")...");

reason = PowerManager.GO_TO_SLEEP_REASON_APPLICATION;

break;

}

mLastSleepTime = eventTime;

mSandmanSummoned = true;

setWakefulnessLocked(WAKEFULNESS_DOZING, reason);

// Report the number of wake locks that will be cleared by going to sleep.

int numWakeLocksCleared = 0;

final int numWakeLocks = mWakeLocks.size();

for (int i = 0; i < numWakeLocks; i++) {

final WakeLock wakeLock = mWakeLocks.get(i);

switch (wakeLock.mFlags & PowerManager.WAKE_LOCK_LEVEL_MASK) {

case PowerManager.FULL_WAKE_LOCK:

case PowerManager.SCREEN_BRIGHT_WAKE_LOCK:

case PowerManager.SCREEN_DIM_WAKE_LOCK:

numWakeLocksCleared += 1;

break;

}

}

EventLogTags.writePowerSleepRequested(numWakeLocksCleared);

// Skip dozing if requested.

if ((flags & PowerManager.GO_TO_SLEEP_FLAG_NO_DOZE) != 0) {

reallyGoToSleepNoUpdateLocked(eventTime, uid);

}

} finally {

Trace.traceEnd(Trace.TRACE_TAG_POWER);

}

return true;

}

由以上代码可见,待机是由于power按键。不是由于某些应用程序调用。

确认盒子待机按钮

经按键盒子上的power键,是走的真待机重启流程,无以上打印。

确认自动待机接口

做实验:设置中修改自动待机,过段时间待机后看日志。

实验结论:自动待机调用的接口与power button不同,该问题不是由调用自动待机接口导致。

日志如下:

sdcard/111.log |grep -nir 'sleep' <

(standard input):451:01-01 03:20:50.225 D/SharedPreferencesLogger( 5198): Tried to log string preference MainSettings/sleepTime = 10800000

(standard input):492:01-01 03:21:00.542 V/SettingsProvider( 3120): Notifying for 0: content://settings/secure/sleep_timeout

(standard input):494:01-01 03:21:00.549 D/SharedPreferencesLogger( 5198): Tried to log string preference MainSettings/sleepTime = 1800000

(standard input):1434:01-01 03:51:00.538 I/PowerManagerService( 3120): Going to sleep due to screen timeout (uid 1000)...

(standard input):1437:01-01 03:51:00.540 I/PowerManagerService( 3120): Sleeping (uid 1000)...

(standard input):1713:01-01 04:05:03.885 I/PowerManagerService( 3120): Waking up from sleep (uid=1000 reason=android.policy:POWER)...

确认测试部“杀遥控器”方法

经试验,在ATV9上无法屏蔽遥控器按键

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android拷机工具,【AndroidFramework】【EMMC拷机】混合拷机时盒子待机 的相关文章

  • Android SQLite 数据库从查询中删除重复项

    我是 SQLite 新手 我使用此查询是为了从特定用户的列中提取所有行 Cursor c db query true TABLE COLUMN USER user null null null null null 这是表格的示例 group
  • 订阅购买后失效日期无效

    我有一个带有应用内订阅的 Android 应用程序 用户购买订阅后 我通过 Google API 通过我们的后端请求 validUntilTimestampMsec 和 initiationTimestampMsec 返回的时间戳 init
  • 随着手指的滑动改变活动

    我想知道如何通过滑动手指来更改活动 或者从右向左滑动手指并更改活动 就像我们在智能手机上看到图片的方式一样 有人知道吗 Cumpz 请参阅以下链接 http savagelook com blog android swipes or fli
  • 使用 gradle-retrolambda 和 Lightweight-Stream-API 过滤 Android 中的对象列表

    我正在尝试在我的 Android 应用程序中过滤 Java 中的对象列表 为此我遵循这个答案 https stackoverflow com a 13140130 3546389 Java 8建议 但由于Android SDK不支持Lamb
  • Android 上的多处理

    我一直在 Android 上执行一些测试 以验证并行化算法 如 FFT 的性能可以提高多少 我通过使用带有 JNI FFTW 的 pthread 和 Java 线程 来自 JTransforms 来实现这些算法 我没有像预期那样通过使用线程
  • 如何创建没有标题的DialogFragment?

    我正在创建一个 DialogFragment 来显示一些有关我的应用程序的帮助消息 除了一件事之外 一切都工作正常 窗口顶部有一条黑色条纹 显示 DialogFragment 我认为它是为标题保留的 我不想使用它 这是特别痛苦的 因为我的自
  • adb shell 输入带有空格的文本

    如何发送带有空格的文本 例如 一些文字 using adb shell input text 找到以下解决方案 adb shell input text some stext 工作正常 但是有什么简单的方法可以用 s 替换空格吗 Examp
  • 使用 HashMap 映射 String 和 int

    我有一个显示国家 地区名称的列表视图 我已将名称作为字符串数组存储在 strings xml 中 称为国家 地区名称 在填充 ListView 时 我使用从 strings xml 读取的 ArrayAdapter String count
  • Android 操作栏 SearchView 作为自动完成功能?

    我在操作栏中使用 SearchView 我想在搜索视图上使用自动完成功能来从数据库中获取结果 这可能吗 或者我是否需要使用自定义文本框 然后添加自动完成功能 所以我只需要对 v7 版本执行此操作 并沮丧地发现我不能简单地使用 ArrayAd
  • MyGestureDetector 扩展了 SimpleOnGestureListener

    我正在实现一个扩展 SimpleOnGestureListener 的 MyGestureDetector 我从以下机构借了课程 http www codeshogun com blog tag view flipper http www
  • Google Play 服务,登录成功,但创建房间时出错

    我正在尝试 google play 服务示例 特别是 ButtonClicker2000 从 logcat 登录过程也正常 但我有另一个错误 06 01 22 43 15 478 D ButtonClicker2000 1565 Sign
  • 移动到SD卡

    我知道从 android 2 2 开始可以使用移动到 SD 卡功能 我想知道有没有办法在我的程序中检测设备是否支持移动到 SD 卡功能 如果支持 则可以移动 否则如果不支持 则什么也不会发生 将在手机内存中 我的主要问题是我的应用程序支持
  • 在 Unity 中构建 apk 应用程序时包含文件

    在unity中构建apk文件时如何将文件和文件夹添加到apk文件中 我需要的是在Android上安装应用程序后 在应用程序的父目录 android data com company product files 中存在一些文件和文件夹 这是我
  • android gradle插件-离线安装

    我必须在离线电脑上安装 android gradle 插件 通过谷歌搜索 我了解到我可以通过本地 Maven 存储库来做到这一点 但从不成功的尝试和所有关于这个问题的质量保证中我知道这并不简单 我从来没有和maven一起工作过 有经验的人可
  • 我怎样才能实现CoverFlow视图[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想用点线布局实现溢出视图 目前我正在使用 polidea 封面流库 URL github https
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • 布局聊天气泡问题:TextView 占满整个屏幕

    我正在研究泡泡聊天 我使用具有两种布局的适配器 一种用于传入消息 另一种用于我的消息 适配器工作正常 我的问题在于传入布局 无法很好地显示传入时间文本 当消息文本增长时 会填满屏幕的整个宽度 并隐藏消息时间的文本 第一个问题 如何才能实现这
  • Meteor:即使设置了 ANDROID_HOME 也未设置

    操作系统 Ubuntu 14 04 框架 流星1 1 0 2 应用名称 Songofy 这是输出meteor install sdk android meteor install sdk android Found Android bund
  • 在 Tensorflow-lite Android 中将位图转换为 ByteBuffer(浮点)

    在用于图像分类的tensorflow lite android演示代码中 图像首先转换为ByteBuffer格式以获得更好的性能 这种从位图到浮点格式的转换以及随后到字节缓冲区的转换似乎是一个昂贵的操作 循环 按位运算符 float mem
  • 使用Gradle组装时如何更改Android应用程序包名称?

    是否可以使用 Gradle 更改 Android 应用程序的包名称 我需要编译同一应用程序的两个副本 并具有唯一的包名称 这样我就可以向市场发布两次 作为使用的更简单的替代方案产品口味 正如伊森的回答 https stackoverflow

随机推荐