2013-05-09 5 views
2

Приложение WP7 (silverlight) продолжает отклоняться, потому что оно «не должно продолжать вибрировать в случае входящего телефонного звонка». Однако просто реагирование на событие Applicaton_Deactivated не позволяет мне устранить проблему, так как этот метод не вызывается при входящем телефонном звонке ...Отключить DispatcherTimer при активном телефонном звонке на WP7

Проблемная вибрация осуществляется через DispatcherTimer, которая продолжает работать в фоновом режиме телефонный звонок. Перемещение выполнения в основной поток ничего не изменило.

Действительно ли приложения продолжают нормально работать по телефону? Или есть способ остановить вибрацию?

Инициализация вибратора и таймера:

vibrator = VibrateController.Default; 
vibratorTimer = new DispatcherTimer(); 
vibratorTimer.Tick += new EventHandler(vibrateRepatedly); 
vibratorTimer.Interval = new TimeSpan(0, 0, 0, 0, UIConstants.VIBRATION_INTERVAL); 
vibrationSpan = new TimeSpan(0, 0, 0, 0, UIConstants.VIBRATION_DURATION); 

Метод Tick:

private void vibrateRepatedly(object sender, EventArgs e) 
{ 
    vibrator.Start(vibrationSpan); 
} 
+0

Вы можете показать нам код, который вы используете для запуска вибрации с помощью таймера отправки? –

+0

Хорошо, добавлен код DispatcherTimer и вибрация. Btw, когда вызывается 'Application_Deactivated', я создаю' vibratorTimer.Stop() ', который работает с блокировкой устройства, но не с телефонными звонками. –

ответ

6

Во время входящего вызоваObscured event вызывается и не Application_Deactivated event. В приложении вы получите событие Obscured, но вы не можете отличить его от входящего вызова, входящего SMS или напоминания.

Here - это ссылка на документацию MSDN для объекта Obscured, которое вы получаете. Существует соответствующий Unobscured event, который вы также можете обнаружить.

+1

Использование: '(Application.Current as App) .RootFrame.Obscured + = MyObscuredHandler;'. –

Смежные вопросы