接(三),startFireEyeTTS函数中mHandler.sendEmptyMessage(9)。
在FireEye.java中:
反编译出来的源码:
private class MainHandler extends Handler
{
private MainHandler()
{
}
public void handleMessage(Message paramMessage)
{
switch (paramMessage.what)
{
default:
case 100001:
case 100002:
case 10000:
case 20000:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 13:
case 100:
case 101:
case 12:
case 1000:
case 1001:
case 1002:
}
while (true)
{
return;
FireEye.this.shortCutLayout.startAnimation(FireEye.this.showShortcutAnimation);
FireEye.access$302(FireEye.this, true);
FireEye.this.shortCutLayout.setVisibility(0);
if (FireEye.this.mConfig.getRecordModeValue() == 0)
{
if (FireEye.this.ShortcutPreview != null)
FireEye.this.ShortcutPreview.setVisibility(0);
if (FireEye.this.ShortcutMute != null)
FireEye.this.ShortcutMute.setVisibility(0);
if (FireEye.this.ShortcutPip == null)
continue;
FireEye.this.ShortcutPip.setVisibility(0);
}
if (FireEye.this.ShortcutMute == null)
continue;
FireEye.this.ShortcutMute.setVisibility(0);
continue;
if (!FireEye.this.showShortCutFlag)
continue;
FireEye.access$302(FireEye.this, false);
FireEye.this.shortCutLayout.setVisibility(8);
if (FireEye.this.mConfig.getRecordModeValue() == 0)
{
if (FireEye.this.ShortcutPreview != null)
FireEye.this.ShortcutPreview.setVisibility(8);
if (FireEye.this.ShortcutMute != null)
FireEye.this.ShortcutMute.setVisibility(8);
if (FireEye.this.ShortcutPip == null)
continue;
FireEye.this.ShortcutPip.setVisibility(8);
}
if (FireEye.this.ShortcutPip == null)
continue;
FireEye.this.ShortcutMute.setVisibility(8);
continue;
if (FireEye.this.mRecordingStatus)
continue;
FireEye.access$602(FireEye.this, true);
FireEye.this.settingLayout.setVisibility(0);
FireEye.this.camera_setting_btn.setVisibility(0);
FireEye.this.camera_switch_btn.setVisibility(0);
continue;
if (!FireEye.this.showSettingLayoutFlag)
continue;
FireEye.access$602(FireEye.this, false);
FireEye.this.settingLayout.setVisibility(8);
FireEye.this.camera_setting_btn.setVisibility(8);
FireEye.this.camera_switch_btn.setVisibility(8);
continue;
FireEye.this.UpdateRecordingTime();
continue;
if (FireEye.this.GetAndShowStorageSpace() != 0)
continue;
if (FireEye.this.mRecordingStatus)
FireEye.this.StopRecording();
if (FireEye.this.mTakeImageStatus)
FireEye.this.SavePicture();
FireEye.this.mStartWork.setBackgroundResource(2130837584);
continue;
FireEye.this.SavePicture();
continue;
FileStorage.DelFirstVideoFile(FireEye.this.mContentResolver);
continue;
FireEye.this.MotionDetecting();
continue;
FireEye.this.AutoRecording();
continue;
FireEye.this.PowerShutDown();
continue;
if (FireEye.this.noDiskDialog == null)
continue;
FireEye.this.noDiskDialog.cancel();
FireEye.access$2002(FireEye.this, null);
continue;
if (FireEye.this.noSpaceDialog == null)
continue;
FireEye.this.noSpaceDialog.cancel();
FireEye.access$2102(FireEye.this, null);
continue;
if (FireEye.this.noDiskDialog == null)
continue;
FireEye.this.noDiskDialog.cancel();
FireEye.access$2002(FireEye.this, null);
continue;
if (FireEye.this.mRecordingStatus)
FireEye.this.StopRecording();
if (FireEye.this.mTakeImageStatus)
FireEye.this.SavePicture();
FireEye.this.mStartWork.setBackgroundResource(2130837584);
continue;
FireEye.this.CarReversing();
continue;
FireEye.this.LastStartRecording();
continue;
FireEye.this.LastStopRecording();
continue;
if (!FireEye.this.wl.isHeld())
continue;
FireEye.this.wl.release();
}
}
}
转化后的代码:
public void handleMessage(Message paramMessage)
{
switch (paramMessage.what)
{
case 100001:
FireEye.shortCutLayout.startAnimation(FireEye.showShortcutAnimation);
FireEye.access$302(FireEye, true);
FireEye.shortCutLayout.setVisibility(View.VISIBLE);
if (FireEye.mConfig.getRecordModeValue() == 0)//是否处于录像模式
{
if (FireEye.ShortcutPreview != null)
FireEye.ShortcutPreview.setVisibility(View.VISIBLE);
if (FireEye.ShortcutMute != null)
FireEye.ShortcutMute.setVisibility(View.VISIBLE);
if (FireEye.ShortcutPip == null)
FireEye.ShortcutPip.setVisibility(View.VISIBLE);
}
if (FireEye.ShortcutMute == null)
FireEye.ShortcutMute.setVisibility(View.VISIBLE);
break;
case 100002:
if (!FireEye.showShortCutFlag){
FireEye.access$302(FireEye, false);
FireEye.this.shortCutLayout.setVisibility(View.GONE);
if (FireEye.mConfig.getRecordModeValue() == 0)
{
if (FireEye.ShortcutPreview != null)
FireEye.ShortcutPreview.setVisibility(View.GONE);
if (FireEye.ShortcutMute != null)
FireEye.ShortcutMute.setVisibility(View.GONE);
if (FireEye.ShortcutPip == null)
FireEye.ShortcutPip.setVisibility(View.GONE);
}
if (FireEye.ShortcutPip == null)
FireEye.ShortcutMute.setVisibility(View.GONE);
}
break;
case 10000:
if (FireEye.mRecordingStatus){
FireEye.access$602(FireEye, true);
FireEye.settingLayout.setVisibility(View.VISIBLE);
FireEye.camera_setting_btn.setVisibility(View.VISIBLE);
FireEye.camera_switch_btn.setVisibility(View.VISIBLE);
}
break;
case 20000:
if (!FireEye.showSettingLayoutFlag){
FireEye.access$602(FireEye, false);
FireEye.settingLayout.setVisibility(View.GONE);
FireEye.camera_setting_btn.setVisibility(View.GONE);
FireEye.camera_switch_btn.setVisibility(View.GONE);
}
break;
case 4:
FireEye.UpdateRecordingTime();
break;
case 5:
if (FireEye.GetAndShowStorageSpace() != 0){
if (FireEye.mRecordingStatus)
FireEye.StopRecording();
if (FireEye.mTakeImageStatus)
FireEye.SavePicture();
FireEye.mStartWork.setBackgroundResource(R.drawable.camera_stop_work);
}
break;
case 6:
FireEye.SavePicture(); //保存图片
break;
case 7:
FileStorage.DelFirstVideoFile(FireEye.mContentResolver); //覆盖删除视频,关键点,下一步分析
break;
case 8:
FireEye.MotionDetecting();//移动侦测功能,下一步分析
break;
case 9:
FireEye.AutoRecording(); //自动录像功能,待后分析
break:
case 10:
FireEye.PowerShutDown(); //自动关机
break;
case 11:
if (FireEye.noDiskDialog == null){ //没有t卡
FireEye.noDiskDialog.cancel();
FireEye.access$2002(FireEye, null);
}
break;
case 13:
if (FireEye.noSpaceDialog == null){//存储空间不足弹出框
FireEye.noSpaceDialog.cancel();
FireEye.access$2102(FireEye, null);
}
break;
case 100:
if (FireEye.noDiskDialog == null){ //和上面的case完全一样,不知道是不是反编译引起的问题
FireEye.noDiskDialog.cancel();
FireEye.access$2002(FireEye, null);
}
break;
case 101:
if (FireEye.mRecordingStatus)
FireEye.StopRecording();
if (FireEye.mTakeImageStatus)
FireEye.SavePicture();
FireEye.mStartWork.setBackgroundResource(R.drawable.camera_stop_work);
break
case 12:
FireEye.CarReversing(); //倒车
break;
case 1000:
FireEye.LastStartRecording();
break;
case 1001:
FireEye.LastStopRecording();//这两个是搞什么飞机的,现在不清楚
break;
case 1002:
if (!FireEye.wl.isHeld()){ //private PowerManager.WakeLock wl;
FireEye.wl.release();
}
break;
}
}
这是一个非常关键的函数,基本上所有的功能都可以从这里下手来分析。