Added VibratorCompatWrapper

Change-Id: I7640f051873f42aa15337edc718ac95ec1c51698
This commit is contained in:
satok 2011-03-23 14:36:37 -07:00
parent 1ddf2a1808
commit 699e429f19
3 changed files with 52 additions and 7 deletions

View file

@ -0,0 +1,47 @@
/*
* Copyright (C) 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.
*/
package com.android.inputmethod.compat;
import android.content.Context;
import android.os.Vibrator;
import java.lang.reflect.Method;
public class VibratorCompatWrapper {
private static final Method METHOD_hasVibrator = CompatUtils.getMethod(Vibrator.class,
"hasVibrator", int.class);
private static final VibratorCompatWrapper sInstance = new VibratorCompatWrapper();
private Vibrator mVibrator;
private VibratorCompatWrapper() {
}
public static VibratorCompatWrapper getInstance(Context context) {
if (sInstance.mVibrator == null) {
sInstance.mVibrator =
(Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
}
return sInstance;
}
public boolean hasVibrator() {
if (mVibrator == null)
return false;
return (Boolean) CompatUtils.invoke(mVibrator, true, METHOD_hasVibrator);
}
}

View file

@ -20,6 +20,7 @@ import com.android.inputmethod.compat.CompatUtils;
import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; import com.android.inputmethod.compat.InputMethodManagerCompatWrapper;
import com.android.inputmethod.compat.InputMethodServiceCompatWrapper; import com.android.inputmethod.compat.InputMethodServiceCompatWrapper;
import com.android.inputmethod.deprecated.VoiceProxy; import com.android.inputmethod.deprecated.VoiceProxy;
import com.android.inputmethod.compat.VibratorCompatWrapper;
import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardActionListener; import com.android.inputmethod.keyboard.KeyboardActionListener;
import com.android.inputmethod.keyboard.KeyboardSwitcher; import com.android.inputmethod.keyboard.KeyboardSwitcher;
@ -45,7 +46,6 @@ import android.os.Handler;
import android.os.IBinder; import android.os.IBinder;
import android.os.Message; import android.os.Message;
import android.os.SystemClock; import android.os.SystemClock;
import android.os.Vibrator;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.text.InputType; import android.text.InputType;
@ -2118,9 +2118,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
private void loadSettings(EditorInfo attribute) { private void loadSettings(EditorInfo attribute) {
// Get the settings preferences // Get the settings preferences
final SharedPreferences prefs = mPrefs; final SharedPreferences prefs = mPrefs;
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); final boolean hasVibrator = VibratorCompatWrapper.getInstance(this).hasVibrator();
mVibrateOn = vibrator != null && vibrator.hasVibrator() mVibrateOn = hasVibrator && prefs.getBoolean(Settings.PREF_VIBRATE_ON, false);
&& prefs.getBoolean(Settings.PREF_VIBRATE_ON, false);
mSoundOn = prefs.getBoolean(Settings.PREF_SOUND_ON, mSoundOn = prefs.getBoolean(Settings.PREF_SOUND_ON,
mResources.getBoolean(R.bool.config_default_sound_enabled)); mResources.getBoolean(R.bool.config_default_sound_enabled));

View file

@ -19,6 +19,7 @@ package com.android.inputmethod.latin;
import com.android.inputmethod.compat.CompatUtils; import com.android.inputmethod.compat.CompatUtils;
import com.android.inputmethod.compat.InputMethodManagerCompatWrapper; import com.android.inputmethod.compat.InputMethodManagerCompatWrapper;
import com.android.inputmethod.deprecated.VoiceProxy; import com.android.inputmethod.deprecated.VoiceProxy;
import com.android.inputmethod.compat.VibratorCompatWrapper;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
@ -26,7 +27,6 @@ import android.app.backup.BackupManager;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.os.Vibrator;
import android.preference.CheckBoxPreference; import android.preference.CheckBoxPreference;
import android.preference.ListPreference; import android.preference.ListPreference;
import android.preference.Preference; import android.preference.Preference;
@ -134,8 +134,7 @@ public class Settings extends PreferenceActivity
generalSettings.removePreference(mVoicePreference); generalSettings.removePreference(mVoicePreference);
} }
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); if (!VibratorCompatWrapper.getInstance(this).hasVibrator()) {
if (vibrator == null || !vibrator.hasVibrator()) {
generalSettings.removePreference(findPreference(PREF_VIBRATE_ON)); generalSettings.removePreference(findPreference(PREF_VIBRATE_ON));
} }