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.view.View; 2659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 2759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang/** 2859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * A view for switching the front/back camera. 2959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang */ 30cead50ba3ce2df3bd9fcf06c6f54ea0c6980f0d7repo syncpublic class CameraPicker extends RotateImageView implements View.OnClickListener { 310935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang private static int mImageResource; 320935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang 33adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang private OnPreferenceChangedListener mListener; 3459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang private ListPreference mPreference; 3559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang private CharSequence[] mCameras; 3659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 37adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang public CameraPicker(Context context) { 38adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang super(context); 390935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang setImageResource(mImageResource); 4026d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang setContentDescription(getResources().getString( 4126d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang R.string.accessibility_camera_picker)); 420935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang } 430935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang 440935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang public static void setImageResourceId(int imageResource) { 450935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang mImageResource = imageResource; 4659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang } 4759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 48adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang public void setListener(OnPreferenceChangedListener listener) { 4959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang mListener = listener; 5059ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang } 5159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 5259ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang public void initialize(ListPreference pref) { 5359ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang mPreference = pref; 5459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang mCameras = pref.getEntryValues(); 5559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang if (mCameras == null) return; 569e76e8d6eec20739203d213ead1fe1aab3b939aeChung-yih Wang setOnClickListener(this); 5759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang setVisibility(View.VISIBLE); 5859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang } 5959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang 60039f1dc1fd89b5baeed8be05f3f21770cf75d4b3Wu-cheng Li @Override 6159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang public void onClick(View v) { 629e76e8d6eec20739203d213ead1fe1aab3b939aeChung-yih Wang if (mCameras == null) return; 633ae6814e3017ea25a57a0f885579022c4faf4e84Angus Kong int index = mPreference.findIndexOfValue(mPreference.getValue()); 643ae6814e3017ea25a57a0f885579022c4faf4e84Angus Kong CharSequence[] values = mPreference.getEntryValues(); 653ae6814e3017ea25a57a0f885579022c4faf4e84Angus Kong index = (index + 1) % values.length; 663ae6814e3017ea25a57a0f885579022c4faf4e84Angus Kong mPreference.setValue((String) mCameras[index]); 679e76e8d6eec20739203d213ead1fe1aab3b939aeChung-yih Wang mListener.onSharedPreferenceChanged(); 6859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang } 6959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang} 70