2013-10-07 2 views
0

Я занимаюсь чтением кода qr.C# windows phone zXing green screen

Когда я просматриваю qr, я бы хотел перейти на другую страницу с именем reader.xaml, где я делаю что-то.

, но когда я нажимаю кнопку НАЗАД от reader.xaml к начальной странице ... иногда появляется зеленый экран и я должен перезагрузить мой Lumia 920 ...

Я не понимаю, почему!?! ?!

Я использую библиотеку zxing.

Кто-то может мне помочь, пожалуйста,

public MainPage() 
    { 
     InitializeComponent(); 
     /* CHECKING CONNECTION STATUS */ 
     bool isConnected = NetworkInterface.GetIsNetworkAvailable(); 
     if (!isConnected) 
     { 
      MessageBox.Show("No internet connection", MessageBoxButton.OK); 
      Microsoft.Xna.Framework.Game game = new Microsoft.Xna.Framework.Game(); 
      game.Exit(); 
     } 

     //reading value 
     if (IsolatedStorageSettings.ApplicationSettings.Contains("idDevice")) 
     { 
      idDevice = (string)IsolatedStorageSettings.ApplicationSettings["idDevice"]; 
     } 
     else 
     { 
      //insert 
      Random random = new Random(); 
      var duration = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0); 
      long ticks = (long)duration.TotalSeconds; 

      idDevice = ticks.ToString() + "-" + random.Next(1, 2000000001).ToString(); 
      IsolatedStorageSettings.ApplicationSettings.Add("idDevice", idDevice); 
      IsolatedStorageSettings.ApplicationSettings.Save(); 
     } 

     _timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) }; 
     GameTimer gameTimer = new GameTimer(); 
     gameTimer.UpdateInterval = TimeSpan.FromMilliseconds(33); 

     // Call FrameworkDispatcher.Update to update the XNA Framework internals. 
     gameTimer.Update += delegate { try { FrameworkDispatcher.Update(); } catch { } }; 

     // Start the GameTimer running. 

     if (Microsoft.Xna.Framework.Media.MediaPlayer.State == MediaState.Playing || Microsoft.Xna.Framework.Media.MediaPlayer.State == MediaState.Paused) 
     { 
      if (MessageBox.Show("Media is currently playing, do you want to stop it?", "Stop Player", MessageBoxButton.OKCancel) == MessageBoxResult.OK) 
      { 
       try 
       { 
        gameTimer.Stop(); 
        Microsoft.Xna.Framework.Media.MediaPlayer.Stop(); 
        AudioPlayerS.Source = new Uri("/audioProva.mp3", UriKind.Relative); 
       } 
       catch { } 
      } 
      else 
      { 
       Microsoft.Xna.Framework.Game game = new Microsoft.Xna.Framework.Game(); 
       game.Exit(); 
      } 

     } 

     // Prime the pump or we'll get an exception. 
     FrameworkDispatcher.Update(); 
    } 


    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     _photoCamera = new PhotoCamera(); 
     _photoCamera.Initialized += OnPhotoCameraInitialized; 
     _previewVideo.SetSource(_photoCamera); 

     //CameraButtons.ShutterKeyHalfPressed += (o, arg) => _photoCamera.Focus(); 
     try 
     { 
      if (_photoCamera.IsFocusSupported) 
      { 
       _timer.Tick += (o, arg) => { try { _photoCamera.FlashMode = FlashMode.Off; _photoCamera.Focus(); } catch (Exception) { } }; 
       _photoCamera.AutoFocusCompleted += (o, arg) => { if (arg.Succeeded) ScanPreviewBuffer(); }; 
      } 
      else 
      { 
       _timer.Tick += (o, arg) => ScanPreviewBuffer(); 
      } 
     } 
     catch 
     { 
      _timer.Tick += (o, arg) => ScanPreviewBuffer(); 
     } 
     base.OnNavigatedTo(e); 
    } 

    private void OnPhotoCameraInitialized(object sender, CameraOperationCompletedEventArgs e) 
    { 
     int width = Convert.ToInt32(_photoCamera.PreviewResolution.Width); 
     int height = Convert.ToInt32(_photoCamera.PreviewResolution.Height); 

     _luminance = new PhotoCameraLuminanceSource(width, height); 
     _reader = new QRCodeReader(); 

     Dispatcher.BeginInvoke(() => 
     { 
      _timer.Start(); 
      _previewTransform.Rotation = _photoCamera.Orientation; 
     }); 
    } 


    private void ScanPreviewBuffer() 
    { 

     try 
     { 
      _photoCamera.GetPreviewBufferY(_luminance.PreviewBufferY); 
      var binarizer = new HybridBinarizer(_luminance); 
      var binBitmap = new BinaryBitmap(binarizer); 
      var result = _reader.decode(binBitmap); 
      Dispatcher.BeginInvoke(() => CheckQr(result.Text)); 
     } 
     catch 
     { 
     } 
    } 

    private void CheckQr(string link) 
    { 
     if (IsValidHttpUri(link) == false) 
     { 
      MessageBox.Show("error", MessageBoxButton.OK); 
      return; 
     } 
     else 
     { 
      _timer.Stop(); 
      try 
      { 
       _photoCamera.CancelFocus(); 
      } 
      catch 
      { 
      } 
      NavigationService.Navigate(new Uri("/reader.xaml?linkQr=" + link, UriKind.Relative)); 
     } 
    } 

Когда я вернулся из reader.xaml появляется зеленый экран.

https://zxingnet.codeplex.com/discussions/407383

ответ

0

ссылается в вопросе содержится решение, вам нужно

"пытались ли Вы Dispose() фотоаппарат в OnNavigatedFrom?"

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