现象描述
【通话】设备被叫通话过程中,设备灭屏,过30秒左右,辅助机讲话,测试机无声音
开启QIT loglit后不可复现; 连接QXDM后不可复现,无法抓取相应log
问题分析
从上面描述看,已经无法导出有用的log信息,供上层来分析了 !!!
总的感觉时设备在屏灭一段时间后,进入了休眠状态。导致底层硬件出问题了。
由于驱动已经底层不懂,只能从上层来添加wake lock来尝试解决。
解决方案
在InCallActivity界面监听Intent.ACTION_SCREEN_OFF Intent.ACTION_SCREEN_ON 广播消息。并添加wake lock
/*meig:jicong.wang add for bug 7454 start {@*/
import android.os.PowerManager;
import android.content.BroadcastReceiver;
import android.content.IntentFilter;
/*meig:jicong.wang add for bug 7454 end @}*/
...
/*meig:jicong.wang add for bug 7454 start {@*/
private PowerManager mPowerManager;
private PowerManager.WakeLock mWakeLock = null;
private BroadcastReceiver mScreenReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
LogUtil.d("InCallActivity action = ", action);
if (action.equals("android.intent.action.SCREEN_OFF")) {
wakeLockAcquire();
} else if(action.equals("android.intent.action.SCREEN_ON")){
wakeLockRelease();
}
}
};
private void wakeLockAcquire(){
if (null != mWakeLock){
mWakeLock.acquire();
LogUtil.d("InCallActivity"," mWakeLock acquire");
}
}
private void wakeLockRelease(){
if (mWakeLock != null && mWakeLock.isHeld()) {
mWakeLock.release();
LogUtil.d("InCallActivity"," mWakeLock release");
}
}
...
@Override
protected void onCreate(Bundle icicle) {
LogUtil.i("InCallActivity.onCreate", "");
super.onCreate(icicle);
...
/*meig:jicong.wang add for bug 7454 start {@*/
mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "InCallActivity");
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
registerReceiver(mScreenReceiver, filter);
/*meig:jicong.wang add for bug 7454 end @}*/
}
@Override
protected void onDestroy() {
LogUtil.i("InCallActivity.onDestroy", "");
super.onDestroy();
common.onDestroy();
/*meig:jicong.wang add for bug 7454 start @}*/
wakeLockRelease();
unregisterReceiver(mScreenReceiver);
/*meig:jicong.wang add for bug 7454 end @}*/
}