CameraPicker.java revision adab2bddc93bf4af535cb58e7167bf8690d97d8c
159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang/* 259ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * Copyright (C) 2010 The Android Open Source Project 359ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * 459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * Licensed under the Apache License, Version 2.0 (the "License"); 559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * you may not use this file except in compliance with the License. 659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * You may obtain a copy of the License at 759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * 859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * http://www.apache.org/licenses/LICENSE-2.0 959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * 1059ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * Unless required by applicable law or agreed to in writing, software 1159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * distributed under the License is distributed on an "AS IS" BASIS, 1259ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1359ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * See the License for the specific language governing permissions and 1459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * limitations under the License. 1559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang */ 1659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 1759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wangpackage com.android.camera.ui; 1859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 19adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wangimport com.android.camera.CameraPreference.OnPreferenceChangedListener; 2059ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wangimport com.android.camera.ListPreference; 21adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wangimport com.android.camera.R; 2259ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 2359ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wangimport android.content.Context; 2459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wangimport android.hardware.Camera.CameraInfo; 2559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wangimport android.util.AttributeSet; 2659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wangimport android.view.View; 279e76e8d6eec20739203d213ead1fe1aab3b939aeChung-yih Wangimport android.widget.ImageView; 2859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 2959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang/** 3059ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * A view for switching the front/back camera. 3159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang */ 32cead50ba3ce2df3bd9fcf06c6f54ea0c6980f0d7repo syncpublic class CameraPicker extends RotateImageView implements View.OnClickListener { 33adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang private OnPreferenceChangedListener mListener; 3459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang private ListPreference mPreference; 3559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang private CharSequence[] mCameras; 36adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang private int mCameraFacing; 3759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 38adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang public CameraPicker(Context context) { 39adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang super(context); 4059ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang } 4159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 42adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang public CameraPicker(Context context, AttributeSet attrs) { 43adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang super(context, attrs); 4459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang } 4559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 46adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang public void setListener(OnPreferenceChangedListener listener) { 4759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang mListener = listener; 4859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang } 4959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 5059ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang public void initialize(ListPreference pref) { 5159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang mPreference = pref; 5259ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang mCameras = pref.getEntryValues(); 5359ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang if (mCameras == null) return; 549e76e8d6eec20739203d213ead1fe1aab3b939aeChung-yih Wang setOnClickListener(this); 5559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang String cameraId = pref.getValue(); 5659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang setVisibility(View.VISIBLE); 5759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang if (mCameras[CameraInfo.CAMERA_FACING_FRONT].equals(cameraId)) { 58adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang mCameraFacing = CameraInfo.CAMERA_FACING_FRONT; 5959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang } else { 60adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang mCameraFacing = CameraInfo.CAMERA_FACING_BACK; 6159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang } 6259ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang } 6359ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 64adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang public void setCameraPickerIcon() { 65adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang setImageResource((mCameraFacing == CameraInfo.CAMERA_FACING_BACK) 66adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang ? R.drawable.ic_rotate_camera_facing_back 67adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang : R.drawable.ic_rotate_camera_facing_forward); 68adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang } 69adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang 70039f1dc1fd89b5baeed8be05f3f21770cf75d4b3Wu-cheng Li @Override 7159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang public void onClick(View v) { 729e76e8d6eec20739203d213ead1fe1aab3b939aeChung-yih Wang if (mCameras == null) return; 73adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang int newCameraIndex = (mCameraFacing == CameraInfo.CAMERA_FACING_BACK) 7459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang ? CameraInfo.CAMERA_FACING_FRONT 7559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang : CameraInfo.CAMERA_FACING_BACK; 76adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang mCameraFacing = newCameraIndex; 77adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang setCameraPickerIcon(); 78adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang mPreference.setValue((String) mCameras[mCameraFacing]); 799e76e8d6eec20739203d213ead1fe1aab3b939aeChung-yih Wang mListener.onSharedPreferenceChanged(); 8059ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang } 8159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang} 82