CameraActivity.java revision d3a252bb71d119cbaeff55aeaa27dd1f8adadba2
1d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb/* 2d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * Copyright (C) 2012 The Android Open Source Project 3d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * 4d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * Licensed under the Apache License, Version 2.0 (the "License"); 5d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * you may not use this file except in compliance with the License. 6d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * You may obtain a copy of the License at 7d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * 8d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * http://www.apache.org/licenses/LICENSE-2.0 9d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * 10d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * Unless required by applicable law or agreed to in writing, software 11d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * distributed under the License is distributed on an "AS IS" BASIS, 12d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * See the License for the specific language governing permissions and 14d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb * limitations under the License. 15d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb */ 16d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 17d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbpackage com.android.camera; 18d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 19d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport android.content.Intent; 20d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport android.content.res.Configuration; 21d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport android.graphics.drawable.Drawable; 22d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport android.os.Bundle; 23d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport android.util.Log; 24d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport android.view.KeyEvent; 25d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport android.view.MotionEvent; 26d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport android.view.View; 27d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport android.view.ViewGroup.LayoutParams; 28d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport android.widget.FrameLayout; 29d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport android.widget.ImageView; 30d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 31d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbimport com.android.camera.ui.CameraSwitcher; 32d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 33d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolbpublic class CameraActivity extends ActivityBase 34d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb implements CameraSwitcher.CameraSwitchListener { 35d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 36d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb CameraModule mCurrentModule; 37d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb private FrameLayout mFrame; 38d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb private ShutterButton mShutter; 39d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb private CameraSwitcher mSwitcher; 40d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb private Drawable[] mDrawables; 41d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb private int mSelectedModule; 42d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 43d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb private static final String TAG = "CAM_activity"; 44d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 45d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb private static final int[] DRAW_IDS = { 46d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb R.drawable.ic_switch_video_holo_light, 47d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb R.drawable.ic_switch_camera_holo_light, 48d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb R.drawable.ic_switch_pan_holo_light 49d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb }; 50d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 51d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public void onCreate(Bundle state) { 52d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.onCreate(state); 53d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb setContentView(R.layout.camera_main); 54d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mFrame =(FrameLayout) findViewById(R.id.main_content); 55d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mShutter = (ShutterButton) findViewById(R.id.shutter_button); 56d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mSwitcher = (CameraSwitcher) findViewById(R.id.camera_switcher); 57d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mDrawables = new Drawable[DRAW_IDS.length]; 58d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb for (int i = 0; i < DRAW_IDS.length; i++) { 59d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb Drawable d = getResources().getDrawable(DRAW_IDS[i]); 60d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mDrawables[i] = d; 61d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 62d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb for (int i = 0; i < mDrawables.length; i++) { 63d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb ImageView iv = new ImageView(this); 64d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb iv.setImageDrawable(mDrawables[i]); 65d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mSwitcher.add(iv, new LayoutParams(LayoutParams.WRAP_CONTENT, 66d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb LayoutParams.WRAP_CONTENT)); 67d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 68d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 69d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mSwitcher.setSwitchListener(this); 70d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule = new PhotoModule(); 71d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.init(this, mFrame); 72d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mSelectedModule = 1; 73d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mSwitcher.setCurrentModule(mSelectedModule); 74d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 75d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 76d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 77d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public void onScroll() { 78d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 79d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 80d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 81d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public void onCameraSelected(int i) { 82d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb if (i != mSelectedModule) { 83d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mPaused = true; 84d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb closeModule(mCurrentModule); 85d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mSelectedModule = i; 86d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb switch (i) { 87d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb case 0: 88d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule = new VideoModule(); 89d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb break; 90d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb case 1: 91d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule = new PhotoModule(); 92d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb break; 93d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb case 2: 94d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule = new VideoModule(); 95d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb break; 96d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 97d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb openModule(mCurrentModule); 98d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 99d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 100d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 101d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb private void openModule(CameraModule module) { 102d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb module.init(this, mFrame); 103d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mPaused = false; 104d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb module.onResumeBeforeSuper(); 105d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb module.onResumeAfterSuper(); 106d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 107d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 108d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb private void closeModule(CameraModule module) { 109d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb module.onPauseBeforeSuper(); 110d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb module.onPauseAfterSuper(); 111d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mFrame.removeAllViews(); 112d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 113d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 114d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public ShutterButton getShutterButton() { 115d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb return mShutter; 116d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 117d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 118d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 119d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public void onConfigurationChanged(Configuration config) { 120d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.onConfigurationChanged(config); 121d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.onConfigurationChanged(config); 122d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 123d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 124d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 125d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public void onPause() { 126d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mPaused = true; 127d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.onPauseBeforeSuper(); 128d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.onPause(); 129d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.onPauseAfterSuper(); 130d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 131d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 132d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 133d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public void onResume() { 134d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mPaused = false; 135d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.onResumeBeforeSuper(); 136d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.onResume(); 137d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.onResumeAfterSuper(); 138d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 139d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 140d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 141d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb protected void onFullScreenChanged(boolean full) { 142d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.onFullScreenChanged(full); 143d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.onFullScreenChanged(full); 144d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 145d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 146d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 147d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb protected void onStop() { 148d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.onStop(); 149d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.onStop(); 150d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 151d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 152d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 153d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb protected void onNewIntent(Intent intent) { 154d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.onNewIntent(intent); 155d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb getStateManager().clearActivityResult(); 156d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 157d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 158d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 159d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb protected void installIntentFilter() { 160d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.installIntentFilter(); 161d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.installIntentFilter(); 162d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 163d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 164d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 165d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb protected void onActivityResult( 166d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb int requestCode, int resultCode, Intent data) { 167d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.onActivityResult(requestCode, resultCode, data); 168d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.onActivityResult(requestCode, resultCode, data); 169d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 170d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 171d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb // Preview area is touched. Handle touch focus. 172d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 173d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb protected void onSingleTapUp(View view, int x, int y) { 174d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.onSingleTapUp(view, x, y); 175d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 176d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 177d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 178d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public void onBackPressed() { 179d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb if (!mCurrentModule.onBackPressed()) { 180d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.onBackPressed(); 181d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 182d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 183d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 184d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 185d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public boolean onKeyDown(int keyCode, KeyEvent event) { 186d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb return mCurrentModule.onKeyDown(keyCode, event) 187d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb || super.onKeyDown(keyCode, event); 188d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 189d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 190d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 191d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public boolean onKeyUp(int keyCode, KeyEvent event) { 192d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb return mCurrentModule.onKeyUp(keyCode, event) 193d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb || super.onKeyUp(keyCode, event); 194d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 195d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 196d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 197d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public boolean dispatchTouchEvent(MotionEvent m) { 198d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb return mCurrentModule.dispatchTouchEvent(m) 199d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb || super.dispatchTouchEvent(m); 200d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 201d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 202d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb // Preview texture has been copied. Now camera can be released and the 203d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb // animation can be started. 204d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 205d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public void onPreviewTextureCopied() { 206d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.onPreviewTextureCopied(); 207d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 208d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 209d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 210d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public void onUserInteraction() { 211d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.onUserInteraction(); 212d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.onUserInteraction(); 213d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 214d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 215d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 216d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb protected boolean updateStorageHintOnResume() { 217d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb return mCurrentModule.updateStorageHintOnResume(); 218d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 219d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 220d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb @Override 221d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb public void updateCameraAppView() { 222d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb super.updateCameraAppView(); 223d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb mCurrentModule.updateCameraAppView(); 224d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb } 225d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb 226d3a252bb71d119cbaeff55aeaa27dd1f8adadba2Michael Kolb} 227