/*
* Copyright Statement:
*
* This software/firmware and related documentation ("MediaTek Software") are
* protected under relevant copyright laws. The information contained herein is
* confidential and proprietary to MediaTek Inc. and/or its licensors. Without
* the prior written permission of MediaTek inc. and/or its licensors, any
* reproduction, modification, use or disclosure of MediaTek Software, and
* information contained herein, in whole or in part, shall be strictly
* prohibited.
*
* MediaTek Inc. (C) 2016. All rights reserved.
*
* BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
* ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
* WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
* NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH
* RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
* INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES
* TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
* RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
* OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
* SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
* RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
* STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S
* ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE
* RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE
* MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
* CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* The following software/firmware and/or related documentation ("MediaTek
* Software") have been modified by MediaTek Inc. All revisions are subject to
* any receiver's applicable license agreements with MediaTek Inc.
*/
package com.mediatek.camera.ui;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.provider.MediaStore;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.OrientationEventListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.mediatek.camera.R;
import com.mediatek.camera.common.IAppUi;
import com.mediatek.camera.common.IAppUiListener.ISurfaceStatusListener;
import com.mediatek.camera.common.IAppUiListener.OnGestureListener;
import com.mediatek.camera.common.IAppUiListener.OnModeChangeListener;
import com.mediatek.camera.common.IAppUiListener.OnPreviewAreaChangedListener;
import com.mediatek.camera.common.IAppUiListener.OnPreviewTouchedListener;
import com.mediatek.camera.common.IAppUiListener.OnShutterButtonListener;
import com.mediatek.camera.common.IAppUiListener.OnThumbnailClickedListener;
import com.mediatek.camera.common.app.IApp;
import com.mediatek.camera.common.debug.LogHelper;
import com.mediatek.camera.common.debug.LogUtil;
import com.mediatek.camera.common.mode.IReviewUI;
import com.mediatek.camera.common.mode.photo.intent.IIntentPhotoUi;
import com.mediatek.camera.common.mode.video.videoui.IVideoUI;
import com.mediatek.camera.common.setting.ICameraSettingView;
import com.mediatek.camera.common.utils.CameraUtil;
import com.mediatek.camera.common.widget.PreviewFrameLayout;
import com.mediatek.camera.common.widget.RotateLayout;
import com.mediatek.camera.gesture.GestureManager;
import com.mediatek.camera.ui.modepicker.ModePickerManager;
import com.mediatek.camera.ui.modepicker.ModeProvider;
import com.mediatek.camera.ui.photo.IntentPhotoUi;
import com.mediatek.camera.ui.preview.PreviewManager;
import com.mediatek.camera.ui.shutter.ShutterButtonManager;
import com.mediatek.camera.ui.video.VideoUI;
import java.util.ArrayList;
import java.util.List;
/**
* CameraAppUI centralizes control of views shared across modules. Whereas module
* specific views will be handled in each Module UI. For example, we can now
* bring the flash animation and capture animation up from each module to app
* level, as these animations are largely the same for all modules.
*
* This class also serves to disambiguate touch events. It recognizes all the
* swipe gestures that happen on the preview by attaching a touch listener to
* a full-screen view on top of preview TextureView. Since CameraAppUI has knowledge
* of how swipe from each direction should be handled, it can then redirect these
* events to appropriate recipient views.
*/
public class CameraAppUI implements IAppUi {
private static final LogUtil.Tag TAG = new LogUtil.Tag(CameraAppUI.class.getSimpleName());
private final IApp mApp;
private GestureManager mGestureManager;
private ShutterButtonManager mShutterManager;
private ThumbnailViewManager mThumbnailViewManager;
private PreviewManager mPreviewManager;
private ModePickerManager mModePickerManager;
private QuickSwitcherManager mQuickSwitcherManager;
private IndicatorViewManager mIndicatorViewManager;
private SettingFragment mSettingFragment;
private EffectViewManager mEffectViewManager;
private OnScreenHintManager mOnScreenHintManager;
private AnimationManager mAnimationManager;
private final List<IViewManager> mViewManagers;
private OnModeChangeListener mModeChangeListener;
private ViewGroup mSavingDialog;
private String mCurrentModeName;
private String mCurrentCameraId = "0";
private String mCurrentModeType;
private ModeProvider mModeProvider;
private Handler mConfigUIHandler = new ConfigUIHandler();
private static final int APPLY_ALL_UI_VISIBILITY = 0;
private static final int APPLY_ALL_UI_ENABLED = 1;
private static final int SET_UI_VISIBILITY = 2;
private static final int SET_UI_ENABLED = 3;
private final OnOrientationChangeListenerImpl mOrientationChangeListener;
/**
* Constructor of cameraAppUi.
* @param app The {@link IApp} implementer.
*/
public CameraAppUI(IApp app) {
mApp = app;
mOrientationChangeListener = new OnOrientationChangeListenerImpl();
mViewManagers = new ArrayList<>();
}
/**
* Called when activity's onCreate() is invoked.
*/
public void onCreate() {
ViewGroup rootView = (ViewGroup) mApp.getActivity()
.findViewById(R.id.app_ui_root);
ViewGroup parentView = (ViewGroup) mApp.getActivity().getLayoutInflater()
.inflate(R.layout.camera_ui_root, rootView, true);
View appUI = parentView.findViewById(R.id.camera_ui_root);
if (CameraUtil.isHasNavigationBar(mApp.getActivity())) {
//get navigation bar height.
int navigationBarHeight = CameraUtil.getNavigationBarHeight(mApp.getActivity());
//set root view bottom margin to let the UI above the navigation bar.
FrameLayout.LayoutParams params =
(FrameLayout.LayoutParams) appUI.getLayoutParams();
if (CameraUtil.isTablet()) {
int displayRotation = CameraUtil.getDisplayRotation(mApp.getActivity());
LogHelper.d(TAG, " onCreate dis
![avatar](https://profile-avatar.csdnimg.cn/2a6daa0dc831459f85b256fb326283d2_itjavawfc.jpg!1)
![avatar-vip](https://csdnimg.cn/release/downloadcmsfe/public/img/user-vip.1c89f3c5.png)
ItJavawfc
- 粉丝: 824
- 资源: 171
最新资源
- 滑动平均算法调整功率波动:满足并网标准的1min和10min最大波动分析,滑动平均算法下的功率波动分析:1min与10min波动计算及并网国标满足策略,功率波动求1min和10min波动,滑动平均算法
- 电子工程中Twin T带阻滤波器的设计与实现
- pycharm安装教程.md
- 基于H6光伏逆变器仿真模型:精确控制与量产程序相统一的代码研究,H6光伏逆变器仿真模型:基于量产程序一致的代码控制的高效能源转换策略,H6光伏逆变器仿真模型 和量产程序一致的代码控制 ,H6光伏逆变器
- pycharm安装教程.md
- pycharm安装教程.md
- 松下FP-X模拟量控制程序:用于空调冷冻泵AFPX控制,含TC2模拟量输入与DA2模拟量输出调控变频冷冻泵转速,支持手动与自动控制模式,松下FP-X模拟量控制程序:用于空调冷冻泵AFPX控制及TC2输
- pycharm安装教程.md
- 三台松下PLC控制16轴精准定位程序:固态硬盘组装范例,新颖写法,注释清晰易懂,适合PLC并联与定位学习栗子,三台松下PLC控制16轴精准定位程序:用于固态硬盘组装,手动与自动模式切换,报景与空机运行
- 松下FP-XH Pro7包膜机结构化编程佳作:清晰操作轴,自动与手动模式范例展示,松下FP-XH包膜机结构化编程范例:清晰条例,易学易用,自动分块编写,展示Pro7编程与定位模块实践,松下FP-XH用
- pycharm安装教程.md
- 豆包本地安装包-windows环境
- 新建 Microsoft Word 文档.docx
- 服务器备份软件介绍与推荐
- 基于Matlab2014的分布式光伏接入电网Simulink仿真研究:MPPT控制与双闭环并网策略模型图及结果展示,基于Matlab2014的分布式光伏接入电网Simulink仿真研究:MPPT控制与
- 福布斯亿万富翁收入来源数据集.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)