Intereting Posts
Не удалось создать Android-проект с помощью Facebook SDK против Android 2.2 (Froyo) Поддержка Ланге для Gujrati и хинди в андроиде Возможно ли сделать SpeechRecognizer быстрее? Интеграция представления Unity3d в действия Android Очень плохое качество звука, записанного на моем дроиде, используя MediaRecorder, почему? Как отключить вибрацию и звук при касании в андроиде программно? Клиент RTSP в android Xamarin – Исправление ошибок «Задача Aapt неожиданно завершилась» Знают ли значения в R.java во время выполнения или между прогонами? ByteBufferAsShortBuffer нельзя передать в java.nio.FloatBuffer Как выровнять значок в левой части панели приложений в андроиде «Непревзойденная дата: 1302828677828», пытающаяся десериализовать с помощью Gson дату в миллисекундах, полученную с сервера Программный пункт меню действий панели действий в Android Мастер установки студии Android – создайте виртуальное устройство Android Android: где хранить файл Selector (xml) для настраиваемых элементов управления дизайном

Включение и выключение вибрации в программном обеспечении Android

В одном из моих приложений для Android мне нужно включить или отключить вибрацию полностью независимо от режима (т. Е. Тихий или общий или громкий).

В настоящее время я использую следующий код с помощью устаревшей функции setVibrateSetting

// Для включения режима вибрации

audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); 

// Для отключения режима вибрации

 audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); 

Но мне интересно, есть ли четкий способ сделать это.

И предложения приветствуются 🙂

С уважением, Jujare

Текст устаревания для setVibrateSetting() говорит:

Этот метод должен использоваться только приложениями, которые заменяют общее управление настройками звука или основным телефоном.

Из того, что я понимаю, нет другого варианта глобального включения или отключения вибрации, поэтому, если у вас есть приложение, такое как менеджер профилей звонков, вам, вероятно, необходимо его использовать.

ИМХО, Google использовал отсрочку здесь ненадлежащим образом.

Я использую следующий класс, чтобы скрыть устаревание в одном классе «compat»:

 @SuppressWarnings("deprecation") class AudioManagerCompat { final static int VIBRATE_TYPE_RINGER = AudioManager.VIBRATE_TYPE_RINGER; final static int VIBRATE_TYPE_NOTIFICATION = AudioManager.VIBRATE_TYPE_NOTIFICATION; final static int VIBRATE_SETTING_ON = AudioManager.VIBRATE_SETTING_ON; final static int VIBRATE_SETTING_OFF = AudioManager.VIBRATE_SETTING_OFF; final static int VIBRATE_SETTING_ONLY_SILENT = AudioManager.VIBRATE_SETTING_ONLY_SILENT; static int getVibrateSetting(AudioManager am, int vibrateType) { return am.getVibrateSetting(vibrateType); } static void setVibrateSetting(AudioManager am, int vibrateType, int vibrateSetting) { am.setVibrateSetting(vibrateType, vibrateSetting); } } 

Вот мой код

 switch (position) { case 0: audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); break; case 1: audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); break; case 2: audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); break; case 3: audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); break; } 

SetVibrateSetting отлично работает, когда я использую свои связи с Gingerbread и IceCreamSandwich, я разрабатываю его с помощью ICS, однако недавно я обнаружил, что он не работает с Jelly Bean, а getVibrateSetting также не работает. Ожидание лучшего пути ~

Вы можете использовать следующие строки кода:

 Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); vibration.cancel(); 

Проверьте это , я нашел это как первый результат Google. Код:

 if(isVibrate){ Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); vib.vibrate(500); Toast.makeText(this, "vib started", Toast.LENGTH_LONG).show(); } else{ // do nothing }