1、 拍照后,底层会连续三次回调UI层AbstractShotMode类的onPictureTaken方法,第一次会调用VoicePhotoFeaturePictureCallback类中的onLastPictureTaken方法,接着回调PhotoModule类中的onLastPictureTaken(boolean isNeedStartPreview)方法,接着在VoicePhotoFeaturePictureCallback类中继续调用recordingVoiceForPic方法准备拍照录音的UI界面。
2、 第二次会调用CommonFeaturePictureCallback类中的onQuickThumbnail(byte[] data,boolean flag)方法,接着回调PhotoModule类中的onQuickThumbnail(byte[] data, boolean isGenUrlEarlier)方法,用于生成缩略图,更新界面上的缩略图。
3、 第三次会调用VoicePhotoFeaturePictureCallback类中的storeImage(byte[] jpegData, int postWidth, int postHeight,boolean isHdr, boolean updateThumbnail)方法,判断当前是否正在录音,如果正在录音则发送消息给UI,将拍照的图像数据传给录音界面并显示出来,否则将图像数据保存到mJpegData中。再回调PhotoModule类中的storeImage(byte[] jpegData, int postWidth, int postHeight ,boolean isHdr ,Location mLocation , boolean updateThumbnail)方法,实现图像数据的保存,录音完成或手动按停止按钮后,会调用VoicePhotoFeaturePictureCallback类中的onStopRecording()方法。