Merge "Add a new "Voice input & output" top-level section of system settings. This replaces the existing "Text-to-speech" section, placing that inside, along with a link to the newly exposed voice search settings (which will soon be expanded) and a link to the LatinIME settings (pending a link to a new section in LatinIME for just voice settings, including the comma setting and a new input language setting)."

This commit is contained in:
Mike LeBeau
2010-01-25 18:37:50 -08:00
committed by Android (Google) Code Review
5 changed files with 139 additions and 9 deletions

View File

@@ -432,6 +432,15 @@
<category android:name="android.intent.category.VOICE_LAUNCH" /> <category android:name="android.intent.category.VOICE_LAUNCH" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name="VoiceInputOutputSettings"
android:label="@string/voice_input_output_settings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="com.android.settings.VOICE_INPUT_OUTPUT_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name="TextToSpeechSettings" android:label="@string/tts_settings"> <activity android:name="TextToSpeechSettings" android:label="@string/tts_settings">
<intent-filter> <intent-filter>

View File

@@ -2058,6 +2058,16 @@ found in the list of installed applications.</string>
<!-- Label for mediaserver process --> <!-- Label for mediaserver process -->
<string name="process_mediaserver_label">Mediaserver</string> <string name="process_mediaserver_label">Mediaserver</string>
<!-- Voice input/output settings --><skip />
<!-- Title of setting on main settings screen. This item will take the user to the screen to tweak settings related to speech functionality -->
<string name="voice_input_output_settings">Voice input &amp; output</string>
<!-- Main voice input/output settings screen title -->
<string name="voice_input_output_settings_title">Voice input &amp; output settings</string>
<!-- Title of voice search settings list item within voice input/output settings -->
<string name="voice_search_settings_title">Voice search settings</string>
<!-- Title of keyboard settings list item within voice input/output settings -->
<string name="keyboard_settings_title">Android keyboard settings</string>
<!-- Text-To-Speech (TTS) settings --><skip /> <!-- Text-To-Speech (TTS) settings --><skip />
<!-- Title of setting on main settings screen. This item will take the user to the screen to tweak settings related to the text-to-speech functionality --> <!-- Title of setting on main settings screen. This item will take the user to the screen to tweak settings related to the text-to-speech functionality -->
<string name="tts_settings">Text-to-speech</string> <string name="tts_settings">Text-to-speech</string>

View File

@@ -144,16 +144,15 @@
android:targetClass="com.android.settings.LanguageSettings" /> android:targetClass="com.android.settings.LanguageSettings" />
</com.android.settings.IconPreferenceScreen> </com.android.settings.IconPreferenceScreen>
<!-- Dock --> <!-- Voice input & output -->
<com.android.settings.IconPreferenceScreen <com.android.settings.IconPreferenceScreen
android:key="dock_settings" settings:icon="@drawable/ic_settings_speech"
settings:icon="@drawable/ic_settings_dock" android:title="@string/voice_input_output_settings">
android:title="@string/dock_settings">
<intent <intent
android:action="android.intent.action.MAIN" android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings" android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.DockSettings" /> android:targetClass="com.android.settings.VoiceInputOutputSettings" />
</com.android.settings.IconPreferenceScreen> </com.android.settings.IconPreferenceScreen>
<!-- Accessibility feedback --> <!-- Accessibility feedback -->
@@ -167,15 +166,16 @@
android:targetClass="com.android.settings.AccessibilitySettings" /> android:targetClass="com.android.settings.AccessibilitySettings" />
</com.android.settings.IconPreferenceScreen> </com.android.settings.IconPreferenceScreen>
<!-- Text-To-Speech --> <!-- Dock -->
<com.android.settings.IconPreferenceScreen <com.android.settings.IconPreferenceScreen
settings:icon="@drawable/ic_settings_speech" android:key="dock_settings"
android:title="@string/tts_settings"> settings:icon="@drawable/ic_settings_dock"
android:title="@string/dock_settings">
<intent <intent
android:action="android.intent.action.MAIN" android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings" android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.TextToSpeechSettings" /> android:targetClass="com.android.settings.DockSettings" />
</com.android.settings.IconPreferenceScreen> </com.android.settings.IconPreferenceScreen>
<!-- Date & Time --> <!-- Date & Time -->

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 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.
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/voice_input_output_settings_title"
android:key="parent">
<PreferenceScreen android:key="voice_search_settings"
android:title="@string/voice_search_settings_title">
<intent android:action="android.speech.action.VOICE_SEARCH_SETTINGS"/>
</PreferenceScreen>
<!-- TODO: Link to a specific voice settings activity within LatinIME when it exists. -->
<PreferenceScreen android:key="keyboard_settings"
android:title="@string/keyboard_settings_title">
<intent android:action="android.intent.action.MAIN"
android:targetPackage="com.android.inputmethod.latin"
android:targetClass="com.android.inputmethod.latin.LatinIMESettings" />
</PreferenceScreen>
<PreferenceScreen android:key="tts_settings"
android:title="@string/tts_settings_title">
<intent android:action="android.intent.action.MAIN"
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.TextToSpeechSettings" />
</PreferenceScreen>
</PreferenceScreen>

View File

@@ -0,0 +1,70 @@
/*
* Copyright (C) 2010 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.settings;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceGroup;
import java.util.List;
/**
* Settings screen for voice input/output.
*/
public class VoiceInputOutputSettings extends PreferenceActivity {
private static final String KEY_PARENT = "parent";
private static final String KEY_VOICE_SEARCH_SETTINGS = "voice_search_settings";
private static final String KEY_KEYBOARD_SETTINGS = "keyboard_settings";
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.voice_input_output_settings);
removePreferenceIfNecessary(KEY_VOICE_SEARCH_SETTINGS);
removePreferenceIfNecessary(KEY_KEYBOARD_SETTINGS);
}
/**
* Removes a preference if there is no activity to handle its intent.
*/
private void removePreferenceIfNecessary(String preferenceKey) {
PreferenceGroup parent = (PreferenceGroup) findPreference(KEY_PARENT);
Preference preference = parent.findPreference(preferenceKey);
if (preference == null) {
return;
}
Intent intent = preference.getIntent();
if (intent != null) {
PackageManager pm = getPackageManager();
if (!pm.queryIntentActivities(intent, 0).isEmpty()) {
return;
}
}
// Did not find a matching activity, so remove the preference.
parent.removePreference(preference);
}
}