diff --git a/java/res/layout-xlarge/recognition_status.xml b/java/res/layout-xlarge/recognition_status.xml new file mode 100644 index 0000000000000000000000000000000000000000..40bc098230f8ba10542a6a64aee11815784fd373 --- /dev/null +++ b/java/res/layout-xlarge/recognition_status.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011, 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. +*/ +--> +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:background="@drawable/background_voice"> + <LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/popup_layout" + android:orientation="vertical" + android:layout_height="371dip" + android:layout_width="500dip" + android:layout_centerInParent="true" + android:background="@drawable/vs_dialog_red"> + <TextView + android:id="@+id/text" + android:text="@string/voice_error" + android:layout_height="wrap_content" + android:layout_width="wrap_content" + android:singleLine="true" + android:layout_marginTop="10dip" + android:textSize="28sp" + android:textColor="#ffffff" + android:layout_gravity="center" + android:visibility="invisible"/> + <RelativeLayout + android:layout_height="0dip" + android:layout_width="match_parent" + android:layout_weight="1.0"> + <com.android.inputmethod.deprecated.voice.SoundIndicator + android:id="@+id/sound_indicator" + android:src="@drawable/mic_full" + android:background="@drawable/mic_base" + android:adjustViewBounds="true" + android:layout_height="wrap_content" + android:layout_width="wrap_content" + android:layout_centerInParent="true" + android:visibility="gone"/> + <ImageView + android:id="@+id/image" + android:src="@drawable/mic_slash" + android:layout_height="wrap_content" + android:layout_width="wrap_content" + android:layout_centerInParent="true" + android:visibility="visible"/> + <ProgressBar + android:id="@+id/progress" + android:indeterminate="true" + android:indeterminateOnly="false" + android:layout_height="60dip" + android:layout_width="60dip" + android:layout_centerInParent="true" + android:visibility="gone"/> + </RelativeLayout> + <!-- + The text is set by the code. We specify a random text (voice_error), so the + text view does not have a zero height. This is necessary to keep the slash + mic and the recording mic is the same position + --> + <TextView + android:id="@+id/language" + android:text="@string/voice_error" + android:layout_height="wrap_content" + android:layout_width="wrap_content" + android:singleLine="true" + android:textSize="14sp" + android:layout_marginBottom="3dip" + android:layout_gravity="center" + android:textColor="#ffffff" + android:visibility="invisible"/> + <Button + android:id="@+id/button" + android:layout_width="match_parent" + android:layout_height="54dip" + android:singleLine="true" + android:focusable="true" + android:text="@string/cancel" + android:layout_gravity="center_horizontal" + android:background="@drawable/btn_center" + android:textColor="#ffffff" + android:textSize="19sp" /> + </LinearLayout> +</RelativeLayout> diff --git a/java/res/layout/recognition_status.xml b/java/res/layout/recognition_status.xml index 45f68974ab1ea70f56e4448f33340c9c3ecdde15..a2ddb7c505fe27614b3d3f2664b69930043e2a77 100644 --- a/java/res/layout/recognition_status.xml +++ b/java/res/layout/recognition_status.xml @@ -1,19 +1,19 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -/* +/* ** ** Copyright 2009, 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 +** 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 +** 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 +** 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. */ --> @@ -37,7 +37,7 @@ android:layout_width="wrap_content" android:singleLine="true" android:layout_marginTop="10dip" - android:textSize="28sp" + android:textSize="20sp" android:textColor="#ffffff" android:layout_gravity="center" android:visibility="invisible"/> @@ -81,7 +81,8 @@ android:layout_height="wrap_content" android:layout_width="wrap_content" android:singleLine="true" - android:textSize="14sp" + android:textSize="15sp" + android:layout_marginTop="3dip" android:layout_marginBottom="3dip" android:layout_gravity="center" android:textColor="#ffffff" @@ -89,13 +90,13 @@ <Button android:id="@+id/button" android:layout_width="match_parent" - android:layout_height="54dip" + android:layout_height="30dip" android:singleLine="true" android:focusable="true" android:text="@string/cancel" android:layout_gravity="center_horizontal" android:background="@drawable/btn_center" android:textColor="#ffffff" - android:textSize="19sp" /> + android:textSize="15sp" /> </LinearLayout> </RelativeLayout> diff --git a/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java b/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java index 0c2a58ea90ed3f0f51f9056535527af596be0f14..d99f40765b5f242c741256d9acbbf631c2dbfe6d 100644 --- a/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java +++ b/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java @@ -67,7 +67,8 @@ public class InputMethodManagerCompatWrapper { // For the compatibility, IMM will create dummy subtypes if subtypes are not found. // This is required to be false if the current behavior is broken. For now, it's ok to be true. - private static final boolean HAS_VOICE_FUNCTION = true; + public static final boolean FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES = + !InputMethodServiceCompatWrapper.CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED; private static final String VOICE_MODE = "voice"; private static final String KEYBOARD_MODE = "keyboard"; @@ -118,8 +119,7 @@ public class InputMethodManagerCompatWrapper { Object retval = CompatUtils.invoke(mImm, null, METHOD_getEnabledInputMethodSubtypeList, (imi != null ? imi.getInputMethodInfo() : null), allowsImplicitlySelectedSubtypes); if (retval == null || !(retval instanceof List) || ((List<?>)retval).isEmpty()) { - if (InputMethodServiceCompatWrapper. - CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) { + if (!FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES) { // Returns an empty list return Collections.emptyList(); } @@ -148,7 +148,7 @@ public class InputMethodManagerCompatWrapper { @SuppressWarnings("unused") private InputMethodSubtypeCompatWrapper getLastResortSubtype(String mode) { - if (VOICE_MODE.equals(mode) && !HAS_VOICE_FUNCTION) + if (VOICE_MODE.equals(mode) && !FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES) return null; Locale inputLocale = SubtypeSwitcher.getInstance().getInputLocale(); if (inputLocale == null) @@ -160,8 +160,7 @@ public class InputMethodManagerCompatWrapper { getShortcutInputMethodsAndSubtypes() { Object retval = CompatUtils.invoke(mImm, null, METHOD_getShortcutInputMethodsAndSubtypes); if (retval == null || !(retval instanceof Map) || ((Map<?, ?>)retval).isEmpty()) { - if (InputMethodServiceCompatWrapper. - CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) { + if (!FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES) { // Returns an empty map return Collections.emptyMap(); } diff --git a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java index d6afd06c5a454bffaab189e997186160a93e214e..828aea41f6f158540ee6b8b677ab289410db2c34 100644 --- a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java +++ b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatWrapper.java @@ -47,11 +47,17 @@ public class InputMethodServiceCompatWrapper extends InputMethodService { @SuppressWarnings("unused") public void notifyOnCurrentInputMethodSubtypeChanged(InputMethodSubtypeCompatWrapper subtype) { // Do nothing when the API level is 11 or later - if (CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED) return; + // and FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES is not true + if (CAN_HANDLE_ON_CURRENT_INPUT_METHOD_SUBTYPE_CHANGED && !InputMethodManagerCompatWrapper. + FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES) { + return; + } if (subtype == null) { subtype = mImm.getCurrentInputMethodSubtype(); } if (subtype != null) { + if (!InputMethodManagerCompatWrapper.FORCE_ENABLE_VOICE_EVEN_WITH_NO_VOICE_SUBTYPES + && !subtype.isDummy()) return; if (!InputMethodManagerCompatWrapper.SUBTYPE_SUPPORTED) { LanguageSwitcherProxy.getInstance().setLocale(subtype.getLocale()); } diff --git a/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java b/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java index 86c8af37f8b574c090734f3c027b37f22100b3f1..806c355a91a6e097c7ae341e6f415ee1d665216a 100644 --- a/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java +++ b/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java @@ -116,6 +116,10 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper return (String)CompatUtils.invoke(mObj, null, METHOD_getExtraValueOf, key); } + public boolean isDummy() { + return !hasOriginalObject(); + } + @Override public boolean equals(Object o) { if (o instanceof InputMethodSubtypeCompatWrapper) {