FileDocCategorySizeDatePackage
CameraSettings.javaAPI DocAndroid 1.5 API2977Wed May 06 22:42:42 BST 2009com.android.camera

CameraSettings.java

/*
 * Copyright (C) 2007 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.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.camera;

import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceActivity;

/**
 *  CameraSettings
 */
public class CameraSettings extends PreferenceActivity
    implements OnSharedPreferenceChangeListener
{
    public static final String KEY_VIDEO_QUALITY = "pref_camera_videoquality_key";
    public static final boolean DEFAULT_VIDEO_QUALITY_VALUE = true;

    private ListPreference mVideoQuality;

    public CameraSettings()
    {
    }

    /** Called with the activity is first created. */
    @Override
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        addPreferencesFromResource(R.xml.camera_preferences);

        initUI();
    }

    @Override
    protected void onResume() {
        super.onResume();
        updateVideoQuality();
    }

    private void initUI() {
        mVideoQuality = (ListPreference) findPreference(KEY_VIDEO_QUALITY);
        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    }

    private void updateVideoQuality() {
        boolean vidQualityValue = getBooleanPreference(mVideoQuality, DEFAULT_VIDEO_QUALITY_VALUE);
        int vidQualityIndex = vidQualityValue ? 1 : 0;
        String[] vidQualities =
            getResources().getStringArray(R.array.pref_camera_videoquality_entries);
        String vidQuality = vidQualities[vidQualityIndex];
        mVideoQuality.setSummary(vidQuality);
    }

    private static int getIntPreference(ListPreference preference, int defaultValue) {
        String s = preference.getValue();
        int result = defaultValue;
        try {
            result = Integer.parseInt(s);
        } catch (NumberFormatException e) {
            // Ignore, result is already the default value.
        }
        return result;
    }

    private boolean getBooleanPreference(ListPreference preference, boolean defaultValue) {
        return getIntPreference(preference, defaultValue ? 1 : 0) != 0;
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
           if (key.equals(KEY_VIDEO_QUALITY)) {
               updateVideoQuality();
           }

    }
}