diff options
Diffstat (limited to 'src/com/android/camera/PhotoController.java')
-rw-r--r-- | src/com/android/camera/PhotoController.java | 252 |
1 files changed, 44 insertions, 208 deletions
diff --git a/src/com/android/camera/PhotoController.java b/src/com/android/camera/PhotoController.java index c2501c781..b76022e57 100644 --- a/src/com/android/camera/PhotoController.java +++ b/src/com/android/camera/PhotoController.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 The Android Open Source Project + * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,211 +16,47 @@ package com.android.camera; -import android.content.Context; -import android.hardware.Camera.Parameters; -import android.view.LayoutInflater; - -import com.android.camera.ui.AbstractSettingPopup; -import com.android.camera.ui.ListPrefSettingPopup; -import com.android.camera.ui.MoreSettingPopup; -import com.android.camera.ui.PieItem; -import com.android.camera.ui.PieItem.OnClickListener; -import com.android.camera.ui.PieRenderer; -import com.android.camera.ui.TimerSettingPopup; -import com.android.gallery3d.R; - -public class PhotoController extends PieController - implements MoreSettingPopup.Listener, - TimerSettingPopup.Listener, - ListPrefSettingPopup.Listener { - private static String TAG = "CAM_photocontrol"; - private static float FLOAT_PI_DIVIDED_BY_TWO = (float) Math.PI / 2; - private final String mSettingOff; - - private PhotoModule mModule; - private String[] mOtherKeys; - // First level popup - private MoreSettingPopup mPopup; - // Second level popup - private AbstractSettingPopup mSecondPopup; - - public PhotoController(CameraActivity activity, PhotoModule module, PieRenderer pie) { - super(activity, pie); - mModule = module; - mSettingOff = activity.getString(R.string.setting_off_value); - } - - public void initialize(PreferenceGroup group) { - super.initialize(group); - mPopup = null; - mSecondPopup = null; - float sweep = FLOAT_PI_DIVIDED_BY_TWO / 2; - addItem(CameraSettings.KEY_FLASH_MODE, FLOAT_PI_DIVIDED_BY_TWO - sweep, sweep); - addItem(CameraSettings.KEY_EXPOSURE, 3 * FLOAT_PI_DIVIDED_BY_TWO - sweep, sweep); - addItem(CameraSettings.KEY_WHITE_BALANCE, 3 * FLOAT_PI_DIVIDED_BY_TWO + sweep, sweep); - if (group.findPreference(CameraSettings.KEY_CAMERA_ID) != null) { - PieItem item = makeItem(R.drawable.ic_switch_photo_facing_holo_light); - item.setFixedSlice(FLOAT_PI_DIVIDED_BY_TWO + sweep, sweep); - item.setOnClickListener(new OnClickListener() { - @Override - public void onClick(PieItem item) { - // Find the index of next camera. - ListPreference camPref = mPreferenceGroup - .findPreference(CameraSettings.KEY_CAMERA_ID); - if (camPref != null) { - int index = camPref.findIndexOfValue(camPref.getValue()); - CharSequence[] values = camPref.getEntryValues(); - index = (index + 1) % values.length; - int newCameraId = Integer - .parseInt((String) values[index]); - mListener.onCameraPickerClicked(newCameraId); - } - } - }); - mRenderer.addItem(item); - } - if (group.findPreference(CameraSettings.KEY_CAMERA_HDR) != null) { - PieItem hdr = makeItem(R.drawable.ic_hdr); - hdr.setFixedSlice(FLOAT_PI_DIVIDED_BY_TWO, sweep); - hdr.setOnClickListener(new OnClickListener() { - @Override - public void onClick(PieItem item) { - // Find the index of next camera. - ListPreference pref = mPreferenceGroup - .findPreference(CameraSettings.KEY_CAMERA_HDR); - if (pref != null) { - // toggle hdr value - int index = (pref.findIndexOfValue(pref.getValue()) + 1) % 2; - pref.setValueIndex(index); - onSettingChanged(pref); - } - } - }); - mRenderer.addItem(hdr); - } - mOtherKeys = new String[] { - CameraSettings.KEY_SCENE_MODE, - CameraSettings.KEY_RECORD_LOCATION, - CameraSettings.KEY_PICTURE_SIZE, - CameraSettings.KEY_FOCUS_MODE, - CameraSettings.KEY_TIMER, - CameraSettings.KEY_TIMER_SOUND_EFFECTS, - }; - PieItem item = makeItem(R.drawable.ic_settings_holo_light); - item.setFixedSlice(FLOAT_PI_DIVIDED_BY_TWO * 3, sweep); - item.setOnClickListener(new OnClickListener() { - @Override - public void onClick(PieItem item) { - if (mPopup == null) { - initializePopup(); - } - mModule.showPopup(mPopup); - } - }); - mRenderer.addItem(item); - } - - protected void setCameraId(int cameraId) { - ListPreference pref = mPreferenceGroup.findPreference(CameraSettings.KEY_CAMERA_ID); - pref.setValue("" + cameraId); - } - - @Override - public void reloadPreferences() { - super.reloadPreferences(); - if (mPopup != null) { - mPopup.reloadPreference(); - } - } - - @Override - // Hit when an item in the second-level popup gets selected - public void onListPrefChanged(ListPreference pref) { - if (mPopup != null && mSecondPopup != null) { - mModule.dismissPopup(true); - mPopup.reloadPreference(); - } - onSettingChanged(pref); - } - - @Override - public void overrideSettings(final String ... keyvalues) { - super.overrideSettings(keyvalues); - if (mPopup == null) initializePopup(); - mPopup.overrideSettings(keyvalues); - } - - protected void initializePopup() { - LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService( - Context.LAYOUT_INFLATER_SERVICE); - - MoreSettingPopup popup = (MoreSettingPopup) inflater.inflate( - R.layout.more_setting_popup, null, false); - popup.setSettingChangedListener(this); - popup.initialize(mPreferenceGroup, mOtherKeys); - if (mActivity.isSecureCamera()) { - // Prevent location preference from getting changed in secure camera mode - popup.setPreferenceEnabled(CameraSettings.KEY_RECORD_LOCATION, false); - } - mPopup = popup; - } - - public void popupDismissed(boolean topPopupOnly) { - // if the 2nd level popup gets dismissed - if (mSecondPopup != null) { - mSecondPopup = null; - if (topPopupOnly) mModule.showPopup(mPopup); - } - } - - // Return true if the preference has the specified key but not the value. - private static boolean notSame(ListPreference pref, String key, String value) { - return (key.equals(pref.getKey()) && !value.equals(pref.getValue())); - } - - private void setPreference(String key, String value) { - ListPreference pref = mPreferenceGroup.findPreference(key); - if (pref != null && !value.equals(pref.getValue())) { - pref.setValue(value); - reloadPreferences(); - } - } - - @Override - public void onSettingChanged(ListPreference pref) { - // Reset the scene mode if HDR is set to on. Reset HDR if scene mode is - // set to non-auto. - if (notSame(pref, CameraSettings.KEY_CAMERA_HDR, mSettingOff)) { - setPreference(CameraSettings.KEY_SCENE_MODE, Parameters.SCENE_MODE_AUTO); - } else if (notSame(pref, CameraSettings.KEY_SCENE_MODE, Parameters.SCENE_MODE_AUTO)) { - setPreference(CameraSettings.KEY_CAMERA_HDR, mSettingOff); - } - super.onSettingChanged(pref); - } - - @Override - // Hit when an item in the first-level popup gets selected, then bring up - // the second-level popup - public void onPreferenceClicked(ListPreference pref) { - if (mSecondPopup != null) return; - - LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService( - Context.LAYOUT_INFLATER_SERVICE); - if (CameraSettings.KEY_TIMER.equals(pref.getKey())) { - TimerSettingPopup timerPopup = (TimerSettingPopup) inflater.inflate( - R.layout.timer_setting_popup, null, false); - timerPopup.initialize(pref); - timerPopup.setSettingChangedListener(this); - mModule.dismissPopup(true); - mSecondPopup = timerPopup; - } else { - ListPrefSettingPopup basic = (ListPrefSettingPopup) inflater.inflate( - R.layout.list_pref_setting_popup, null, false); - basic.initialize(pref); - basic.setSettingChangedListener(this); - mModule.dismissPopup(true); - mSecondPopup = basic; - } - mModule.showPopup(mSecondPopup); - } +import android.view.SurfaceHolder; +import android.view.View; + +import com.android.camera.ShutterButton.OnShutterButtonListener; + + +public interface PhotoController extends OnShutterButtonListener { + + public static final int PREVIEW_STOPPED = 0; + public static final int IDLE = 1; // preview is active + // Focus is in progress. The exact focus state is in Focus.java. + public static final int FOCUSING = 2; + public static final int SNAPSHOT_IN_PROGRESS = 3; + // Switching between cameras. + public static final int SWITCHING_CAMERA = 4; + + // returns the actual set zoom value + public int onZoomChanged(int requestedZoom); + + public boolean isImageCaptureIntent(); + + public boolean isCameraIdle(); + + public void onCaptureDone(); + + public void onCaptureCancelled(); + + public void onCaptureRetake(); + + public void cancelAutoFocus(); + + public void stopPreview(); + + public int getCameraState(); + + public void onSingleTapUp(View view, int x, int y); + + public void onSurfaceCreated(SurfaceHolder holder); + + public void onCountDownFinished(); + + public void onScreenSizeChanged(int width, int height, int previewWidth, int previewHeight); + } |