1/*
2 * Copyright (C) 2009 Google Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License. You may obtain a copy of
6 * the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations under
14 * the License.
15 */
16
17package com.android.inputmethod.voice;
18
19import android.content.ContentResolver;
20import android.database.Cursor;
21import android.net.Uri;
22import android.provider.Settings;
23import android.util.Log;
24
25/**
26 * Utility for retrieving settings from Settings.Secure.
27 */
28public class SettingsUtil {
29    /**
30     * A whitespace-separated list of supported locales for voice input from the keyboard.
31     */
32    public static final String LATIN_IME_VOICE_INPUT_SUPPORTED_LOCALES =
33            "latin_ime_voice_input_supported_locales";
34
35    /**
36     * A whitespace-separated list of recommended app packages for voice input from the
37     * keyboard.
38     */
39    public static final String LATIN_IME_VOICE_INPUT_RECOMMENDED_PACKAGES =
40            "latin_ime_voice_input_recommended_packages";
41
42    /**
43     * The maximum number of unique days to show the swipe hint for voice input.
44     */
45    public static final String LATIN_IME_VOICE_INPUT_SWIPE_HINT_MAX_DAYS =
46            "latin_ime_voice_input_swipe_hint_max_days";
47
48    /**
49     * The maximum number of times to show the punctuation hint for voice input.
50     */
51    public static final String LATIN_IME_VOICE_INPUT_PUNCTUATION_HINT_MAX_DISPLAYS =
52            "latin_ime_voice_input_punctuation_hint_max_displays";
53
54    /**
55     * Endpointer parameters for voice input from the keyboard.
56     */
57    public static final String LATIN_IME_SPEECH_MINIMUM_LENGTH_MILLIS =
58            "latin_ime_speech_minimum_length_millis";
59    public static final String LATIN_IME_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS =
60            "latin_ime_speech_input_complete_silence_length_millis";
61    public static final String LATIN_IME_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS =
62            "latin_ime_speech_input_possibly_complete_silence_length_millis";
63
64    /**
65     * Min and max volume levels that can be displayed on the "speak now" screen.
66     */
67    public static final String LATIN_IME_MIN_MICROPHONE_LEVEL =
68            "latin_ime_min_microphone_level";
69    public static final String LATIN_IME_MAX_MICROPHONE_LEVEL =
70            "latin_ime_max_microphone_level";
71
72    /**
73     * The number of sentence-level alternates to request of the server.
74     */
75    public static final String LATIN_IME_MAX_VOICE_RESULTS = "latin_ime_max_voice_results";
76
77    /**
78     * Get a string-valued setting.
79     *
80     * @param cr The content resolver to use
81     * @param key The setting to look up
82     * @param defaultValue The default value to use if none can be found
83     * @return The value of the setting, or defaultValue if it couldn't be found
84     */
85    public static String getSettingsString(ContentResolver cr, String key, String defaultValue) {
86        String result = Settings.Secure.getString(cr, key);
87        return (result == null) ? defaultValue : result;
88    }
89
90    /**
91     * Get an int-valued setting.
92     *
93     * @param cr The content resolver to use
94     * @param key The setting to look up
95     * @param defaultValue The default value to use if the setting couldn't be found or parsed
96     * @return The value of the setting, or defaultValue if it couldn't be found or parsed
97     */
98    public static int getSettingsInt(ContentResolver cr, String key, int defaultValue) {
99        return Settings.Secure.getInt(cr, key, defaultValue);
100    }
101
102    /**
103     * Get a float-valued setting.
104     *
105     * @param cr The content resolver to use
106     * @param key The setting to look up
107     * @param defaultValue The default value to use if the setting couldn't be found or parsed
108     * @return The value of the setting, or defaultValue if it couldn't be found or parsed
109     */
110    public static float getSettingsFloat(ContentResolver cr, String key, float defaultValue) {
111        return Settings.Secure.getFloat(cr, key, defaultValue);
112    }
113}
114