User-initiated stop. Scanning stays off until resume is called.
Future<void> stop() async { _userPaused = true; _cancelTimers(); await _scanner.stop(); _active = false; _notifyStateChanged(); }