Как заставить телефон вибрировать, когда профиль находится в режиме вибрации, или никогда не звонить, когда профиль находится в бесшумном режиме и будет звонить в режиме звонка

Хорошо, отправляя ответ на мой собственный вопрос. Из того, что я могу сказать, , этот является идеальным способом реализации Mutex, который:

  1. Всегда получает Disposed
  2. Получает освобождение iff WaitOne был успешным.
  3. Не будет отказано, если какой-либо код выдает исключение.

Надеюсь, это поможет кому-то!

using (Mutex mut = new Mutex(false, MUTEX_NAME))
{
    if (mut.WaitOne(new TimeSpan(0, 0, 30)))
    {
        try
        {
           // Some code that deals with a specific TCP port
           // Don't want this to run twice in multiple processes        
        }
        catch(Exception)
        {
           // Handle exceptions and clean up state
        }
        finally
        {
            mut.ReleaseMutex();
        }
    }
}

Обновление. Некоторые могут утверждать, что если код в блоке try помещает ваш ресурс в нестабильное состояние, вы должны not отпустить Mutex и вместо этого оставить его заброшенным. Другими словами, просто позвоните mut.ReleaseMutex();, когда код завершится успешно, а не поместите его в блок finally. Код, приобретающий Mutex, мог бы поймать это исключение, а сделать правильную вещь .

В моей ситуации я не изменяю какое-либо состояние. Я временно использую TCP-порт и не могу одновременно запускать другой экземпляр программы. По этой причине, я думаю, что мое решение выше, но ваше мнение может быть другим.

0
задан Zoe 18 February 2019 в 08:20
поделиться

2 ответа

попробуйте

RINGER_MODE_NORMAL Этот режим используется для установки режима звонка в устройстве. RINGER_MODE_SILENT Этот режим используется для установки бесшумного режима на устройстве. RINGER_MODE_VIBRATE Этот режим используется для установки режима вибрации в устройстве.

0
ответ дан Thareek Anvar 18 February 2019 в 08:20
поделиться

попробуйте этот код ...

создать экземпляр класса AudioManager, вызвав метод getSystemService () с аргументом Context.AUDIO_SERVICE. Как только мы создадим экземпляр класса AudioManager, мы сможем использовать метод setRingerMode () для установки громкости или режимов звонка нашего устройства. основываясь на наших требованиях. КОД:

AudioManager aManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
aManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

с помощью метода getRingerMode () класса AudioManager мы можем легко получить текущий режим звонка устройства.

AudioManager aManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int currentMode = aManager.getRingerMode();

if(currentMode == AudioManager.RINGER_MODE_NORMAL){
    // Do your code
}
0
ответ дан vivek 18 February 2019 в 08:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: