Android相机启动情况分析

    Android相机启动与从第三方应用调用启动是有不同的,第三方应用调用系统相机启动时在onCreate()函数中会有一个类似与parseIntent()(4.4.2相机)的函数用来分析相机是自身启动还是第三方调用(自身启动和第三方调用,相机启动时界面显示会有不同)。

    

  1. private void parseIntent() {  
  2.         Intent intent = getIntent();  
  3.         String action = intent.getAction();  
  4.         if (MediaStore.ACTION_IMAGE_CAPTURE.equals(action)  
  5.                 || MediaStore.ACTION_IMAGE_CAPTURE_SECURE.equals(action)) {  
  6.             mPickType = PICK_TYPE_PHOTO;  
  7.         } else if (EXTRA_VIDEO_WALLPAPER_IDENTIFY_VALUE.equals(  
  8.                 intent.getStringExtra(EXTRA_VIDEO_WALLPAPER_IDENTIFY))) {  
  9.             mWallpaperAspectio = intent.getFloatExtra(EXTRA_VIDEO_WALLPAPER_RATION,  
  10.                     WALLPAPER_DEFAULT_ASPECTIO);  
  11.             intent.putExtra(EXTRA_QUICK_CAPTURE, true);  
  12.             mPickType = PICK_TYPE_WALLPAPER;  
  13.         } else if (MediaStore.ACTION_VIDEO_CAPTURE.equals(action)) {  
  14.             mPickType = PICK_TYPE_VIDEO;         
  15.         } else if (ACTION_STEREO3D.equals(action)){  
  16.             mPickType = PICK_TYPE_STEREO3D;  
  17.         } else {  
  18.             mPickType = PICK_TYPE_NORMAL;  
  19.         }  
  20.         if (mPickType != PICK_TYPE_NORMAL) {  
  21.             mQuickCapture = intent.getBooleanExtra(EXTRA_QUICK_CAPTURE, false);  
  22.             mSaveUri = intent.getParcelableExtra(MediaStore.EXTRA_OUTPUT);  
  23.             mLimitedSize = intent.getLongExtra(MediaStore.EXTRA_SIZE_LIMIT, 0L);  
  24.             mCropValue = intent.getStringExtra(EXTRA_PHOTO_CROP_VALUE);  
  25.             mLimitedDuration = intent.getIntExtra(MediaStore.EXTRA_DURATION_LIMIT, 0);  
  26.             mAppGuideFinished = true;  
  27.         }  
  28.         Log.i(TAG, "parseIntent() mPickType=" + mPickType + ", mQuickCapture="  
  29.                 + mQuickCapture + ", mSaveUri=" + mSaveUri + ", mLimitedSize=" + mLimitedSize  
  30.                 + ", mCropValue=" + mCropValue + ", mLimitedDuration=" + mLimitedDuration);  
  31.         if (true) {  
  32.             Log.d(TAG, "parseIntent() action=" + intent.getAction());  
  33.             Bundle extra = intent.getExtras();  
  34.             if (extra != null) {  
  35.                 mCanShowVideoShare = extra.getBoolean(CAN_SHARE, true);  
  36.                 for (String key : extra.keySet()) {  
  37.                     Log.v(TAG, "parseIntent() extra[" + key + "]=" + extra.get(key));  
  38.                 }  
  39.             }  
  40.             if (intent.getCategories() != null) {  
  41.                 for (String key : intent.getCategories()) {  
  42.                     Log.v(TAG, "parseIntent() getCategories=" + key);  
  43.                 }  
  44.             }  
  45.             Log.v(TAG, "parseIntent() data=" + intent.getData());  
  46.             Log.v(TAG, "parseIntent() flag=" + intent.getFlags());  
  47.             Log.v(TAG, "parseIntent() package=" + intent.getPackage());  
  48.             Log.v(TAG, "mCanShowVideoShare = " +mCanShowVideoShare);  
  49.         }  
  50.     }  

    另外貌似isImageCaptureIntent()函数也可以用来判断相机是否为短信或联系人编辑界面发送的intent到camera.

    

  1. public boolean isImageCaptureIntent() {  
  2.         return PICK_TYPE_PHOTO == mPickType;  
  3.     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值