Ошибка Blackberry _camConfigHandle является недействительным - PullRequest
1 голос
/ 11 января 2012

Я делаю приложение для чтения qr-кода, при нажатии кнопки я открываю вид с камеры. Затем, в зависимости от их результата, он перейдет к следующему экрану, но во второй раз, когда я открою экран, он выдаст мне ошибку CamController: ошибка получения: _camConfigHandle неверен .

Редакция: Я должен попробовать этот код для удаления сканера и перейти к следующему экрану

 UiApplication.getUiApplication().invokeLater(new Runnable() {
                            public void run() {
                                try {
                                    _scanner.getPlayer().stop();

                                } catch (MediaException e) {
                                    e.printStackTrace();
                                }
                                _scanner.getPlayer().close();
                                System.out.println("closeScan");
                                _scanner.getPlayer().deallocate();
                                System.out.println("deallocateScan");
                                System.out.println("deleteAllScan");
                                UiApplication.getUiApplication().popScreen(_barcodeScreen);
                            }
                        });

и это мой код для сканирования

 private void scanBarcode() {

        if (_barcodeScreen == null) {
            Hashtable hints = new Hashtable();
            Vector formats = new Vector();
            formats.addElement(BarcodeFormat.QR_CODE);
            hints.put(DecodeHintType.POSSIBLE_FORMATS, formats);
            hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
            BarcodeDecoder decoder = new BarcodeDecoder(hints);
            try {
                _scanner = new BarcodeScanner(decoder, new MyBarcodeDecoderListener());
                _barcodeScreen = new MyBarcodeScannerViewScreen(_scanner);

            } catch (Exception e) {
             System.out.println("error="+e.toString());
                return;
            }
        }

        try {
            _scanner.startScan();
            UiApplication.getUiApplication().pushScreen(_barcodeScreen);
        } catch (Exception e) {
             System.out.println("error1="+e.toString());
        }

    }

Заранее спасибо.

1 Ответ

1 голос
/ 11 января 2012

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

//close the scanner
public void closeScanner()
{  
if (this.player != null) {
  try {
    this.player.stop();
  } catch (MediaException e) {
      //handle exception
    Log.Error("Exception stopping player: " + e);
  }
  //de allocate and close player
  this.player.deallocate();
  this.player.close();
}
}
...