全志行车记录仪里面FireEyepublic.apk反编译的分析(四)——Handler分析

接(三),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;
	  	
      }
      
    }
这是一个非常关键的函数,基本上所有的功能都可以从这里下手来分析。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值