/** * @param context Current context * @param uri Path of the image passed * @param bitmap Bitmap that will be saved that has filter applied */ public void saveFile(Context context, Uri uri, Bitmap bitmap) { Log.d(TAG, "saveFile() ::" + "\ncontext: " + context + "\nuri: " + uri + "\nbitmap: " + bitmap); String imagePath = uri.toString(); Log.i(TAG, "saveFile() ::" + "\nimagePath: " + imagePath); File file = new File(imagePath); filterUri = Uri.parse(imagePath); /* boolean isQualityImprove applies multiple filters. Only want to * save file until after all filters are applied */ if (CameraActivity.isQualityImprove() == false) { try { Log.e(TAG, "Saving filtered file in progress"); FileOutputStream fOut = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fOut); fOut.flush(); fOut.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
public void unBindSaverService() { Log.i(TAG, "[unBindSaverService]..."); synchronized (mSaveServiceObject) { if (mSaverService != null) { mSaverService = null; } } if (mConnection != null) { mContext.unbindService(mConnection); } }
// record type, location and datetaken public SaveRequest preparePhotoRequest(int fileType, int pictureType) { Log.i(TAG, "[preparePhotoRequest]fileType =" + fileType + ",pictureType = " + pictureType); SaveRequest request = null; if (fileType == Storage.FILE_TYPE_PANO) { request = new PanoOperator(pictureType); } else { request = new PhotoOperator(pictureType); } request.prepareRequest(); mContext.applyParameterForCapture(request); return request; }
// sychronized this method to avoid when mFileNamer is just construct by an // AsynTask but // another AsynTask quickly get element from mFileNamer, it will return // null. private synchronized String createName(int fileType, long dateTaken, int count) { if (mFileNamer == null) { mFileNamer = new HashMap<Integer, ImageFileNamer>(); ImageFileNamer photo = new ImageFileNamer(mContext.getString(R.string.image_file_name_format)); mFileNamer.put(Storage.FILE_TYPE_PHOTO, photo); // pano_file_name_format changed to image format for UX design. mFileNamer.put(Storage.FILE_TYPE_PANO, photo); mFileNamer.put( Storage.FILE_TYPE_VIDEO, new ImageFileNamer(mContext.getString(R.string.video_file_name_format))); } Date date = new Date(dateTaken); String name = null; // tag != 0 is used for the last blend picture if (count == 0 && mFileNamer.get(fileType) != null) { name = mFileNamer.get(fileType).generateName(dateTaken); } else if (count > 0) { name = mFileNamer.get(fileType).generateContinuousName(dateTaken, count); } Log.d(TAG, "[createName]fileType = " + fileType + ",name = " + name); return name; }
public void initialize(PreferenceGroup group) { super.initialize(group); mPopup = null; PieItem item = null; final Resources res = mActivity.getResources(); Locale locale = res.getConfiguration().locale; // The order is from left to right in the menu. // HDR+ (GCam). if (group.findPreference(CameraSettings.KEY_CAMERA_HDR_PLUS) != null) { item = makeSwitchItem(CameraSettings.KEY_CAMERA_HDR_PLUS, true); mRenderer.addItem(item); } // HDR. if (group.findPreference(CameraSettings.KEY_CAMERA_HDR) != null) { item = makeSwitchItem(CameraSettings.KEY_CAMERA_HDR, true); mRenderer.addItem(item); } // Exposure compensation. if (group.findPreference(CameraSettings.KEY_EXPOSURE) != null) { item = makeItem(CameraSettings.KEY_EXPOSURE); item.setLabel(res.getString(R.string.pref_exposure_label)); mRenderer.addItem(item); } // More settings. PieItem more = makeItem(R.drawable.ic_settings_holo_light); more.setLabel(res.getString(R.string.camera_menu_more_label)); mRenderer.addItem(more); // Flash. if (group.findPreference(CameraSettings.KEY_FLASH_MODE) != null) { item = makeItem(CameraSettings.KEY_FLASH_MODE); item.setLabel(res.getString(R.string.pref_camera_flashmode_label)); mRenderer.addItem(item); } // Camera switcher. if (group.findPreference(CameraSettings.KEY_CAMERA_ID) != null) { item = makeSwitchItem(CameraSettings.KEY_CAMERA_ID, false); final PieItem fitem = item; item.setOnClickListener( new OnClickListener() { @Override public void onClick(PieItem item) { // Find the index of next camera. ListPreference pref = mPreferenceGroup.findPreference(CameraSettings.KEY_CAMERA_ID); if (pref != null) { int index = pref.findIndexOfValue(pref.getValue()); CharSequence[] values = pref.getEntryValues(); index = (index + 1) % values.length; pref.setValueIndex(index); mListener.onCameraPickerClicked(index); } updateItem(fitem, CameraSettings.KEY_CAMERA_ID); } }); mRenderer.addItem(item); } // Location. if (group.findPreference(CameraSettings.KEY_RECORD_LOCATION) != null) { item = makeSwitchItem(CameraSettings.KEY_RECORD_LOCATION, true); more.addItem(item); if (mActivity.isSecureCamera()) { // Prevent location preference from getting changed in secure camera mode item.setEnabled(false); } } // Countdown timer. final ListPreference ctpref = group.findPreference(CameraSettings.KEY_TIMER); final ListPreference beeppref = group.findPreference(CameraSettings.KEY_TIMER_SOUND_EFFECTS); item = makeItem(R.drawable.ic_timer); item.setLabel(res.getString(R.string.pref_camera_timer_title).toUpperCase(locale)); item.setOnClickListener( new OnClickListener() { @Override public void onClick(PieItem item) { CountdownTimerPopup timerPopup = (CountdownTimerPopup) mActivity .getLayoutInflater() .inflate(R.layout.countdown_setting_popup, null, false); timerPopup.initialize(ctpref, beeppref); timerPopup.setSettingChangedListener(PhotoMenu.this); mUI.dismissPopup(); mPopup = timerPopup; mUI.showPopup(mPopup); } }); more.addItem(item); // Image size. item = makeItem(R.drawable.ic_imagesize); final ListPreference sizePref = group.findPreference(CameraSettings.KEY_PICTURE_SIZE); item.setLabel(res.getString(R.string.pref_camera_picturesize_title).toUpperCase(locale)); item.setOnClickListener( new OnClickListener() { @Override public void onClick(PieItem item) { ListPrefSettingPopup popup = (ListPrefSettingPopup) mActivity .getLayoutInflater() .inflate(R.layout.list_pref_setting_popup, null, false); popup.initialize(sizePref); popup.setSettingChangedListener(PhotoMenu.this); mUI.dismissPopup(); mPopup = popup; mUI.showPopup(mPopup); } }); more.addItem(item); // White balance. if (group.findPreference(CameraSettings.KEY_WHITE_BALANCE) != null) { item = makeItem(CameraSettings.KEY_WHITE_BALANCE); item.setLabel(res.getString(R.string.pref_camera_whitebalance_label)); more.addItem(item); } // Scene mode. if (group.findPreference(CameraSettings.KEY_SCENE_MODE) != null) { IconListPreference pref = (IconListPreference) group.findPreference(CameraSettings.KEY_SCENE_MODE); pref.setUseSingleIcon(true); item = makeItem(CameraSettings.KEY_SCENE_MODE); more.addItem(item); } }
public PhotoMenu(CameraActivity activity, PhotoUI ui, PieRenderer pie) { super(activity, pie); mUI = ui; mSettingOff = activity.getString(R.string.setting_off_value); mActivity = activity; }
public void bindSaverService() { Log.i(TAG, "[bindSaverService]..."); Intent intent = new Intent((Context) mContext, FileSaverService.class); mContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE); }
public FileSaver(CameraActivity cameraActivity) { Log.i(TAG, "[FileSaver]constructor... "); mContext = cameraActivity; mContentResolver = mContext.getContentResolver(); }
@Override public void onQueueStatus(boolean full) { mContext.getCameraAppUI().getPhotoShutter().setEnabled(!full); }
public PhotoController(CameraActivity activity, PhotoModule module, PieRenderer pie) { super(activity, pie); mModule = module; mSettingOff = activity.getString(R.string.setting_off_value); }