Zxing 1.7 и Android API 15 — сканер вызывает сбой приложения на устройстве Motorola

У меня есть Zxing 1.7 и Android API 15. Интегрировал сканер через Intent и добавил CaptureActivity, чтобы приложение не спрашивало, какую камеру использовать. Создал core.jar и добавил его в библиотеку проекта Android, а также добавил Zxing Android в качестве проекта библиотеки в мой проект. построить путь. Сканер не работает, и приложение вылетает в первый раз, когда я нажимаю вкладку «san» в своем приложении, но в следующий раз та же функциональность работает, когда я снова вхожу в свое приложение, и штрих-код можно отсканировать. Когда приложение вылетает в первый раз, оно выдает исключение ClassNot Found для CaptureActivity. Я выполнил все необходимые шаги, а также добавил CaptureActivity в файл Manifst.xml. Пожалуйста, посоветуйте, так как я пробовал много альтернатив. Работает ли Zxing только с Android API9, который сейчас устарел и его замена 10? Ниже приведен код для моего ScanActivity

public void onCreate(Bundle savedInstanceState) 
  {         
    super.onCreate(savedInstanceState);        
    //Scan code
    Intent intent= new Intent("com.google.zxing.client.android.SCAN");
    intent.putExtra("SCAN_MODE", "PRODUCT_MODE");

    //To aviod the complete action using dialog box
    intent.setClassName(this, "com.google.zxing.client.android.CaptureActivity"); 

    startActivityForResult( intent, 0 );

    //getApplicationContext().startActivity( intent );
    //View scanView = ((ActivityGroup) context).getLocalActivityManager().startActivity(id, newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();

    /*
    Intent i = new Intent(Intent.ACTION_MAIN);
    PackageManager manager = getPackageManager();
    i = manager.getLaunchIntentForPackage( "com.google.zxing.client.android.SCAN" );
    i.addCategory( Intent.CATEGORY_LAUNCHER );
    startActivityForResult( i, 0);
    */
   }

  public void onActivityResult(int requestCode, int resultCode, Intent intent)
  {
    System.out.println("ScanRewardCodeActivity OnActivityResult Method");
    if(requestCode == 0)
    {
      //Stop QR Code Reader intent
      finishActivity( 0 );

      TabActivity tabActivity = (TabActivity)getParent();
      TabHost tabHost = tabActivity.getTabHost();

      if(resultCode == RESULT_OK){
       System.out.println("Done");
      }
    }
 }

person SujayP    schedule 06.02.2012    source источник


Ответы (1)


Здесь есть ряд проблем.

  • Если вы используете намерения, вам не нужен код core/ или android/. Обязательно удалите весь этот код из своего проекта, так как я думаю, что он мешает и вызывает сбой.
  • Вы не должны изменять свой AndroidManifest.xml
  • Да, zxing 1.7 работает со всеми версиями вплоть до 4.0.x, но вам следует использовать zxing 2.0, который был выпущен несколько дней назад.
  • Не пытайтесь написать свой собственный код интеграции. Используйте код, указанный в android-integration/, так как он определенно работает
person Sean Owen    schedule 06.02.2012
comment
Спасибо, Шон, за совет, я новый разработчик Android и перешел по ссылке damianflannery.wordpress.com/2011/06/13/. В своем комментарии вы сказали удалить ядро/и андроид/, но как я могу инициировать сканирование? У меня есть вкладка сканирования, при изменении которой я вызываю код ScanActivity, который я скопировал выше. Вы предлагаете изменить вышеприведенный код метода onCreate()? - person SujayP; 06.02.2012
comment
Это все, что вам нужно, и ничего больше: code.google.com/p/zxing/ wiki/ScanningViaIntent - person Sean Owen; 06.02.2012
comment
Большое спасибо.. Я понял, о чем вы говорили.. Теперь я также пробую БЕЗ намерения, как я уже сказал, я перешел по ссылке damianflannery.wordpress.com/2011/06/13/ и ниже приведен код onCreate и обработайте результат, но при получении CaptureActivity не найдена ошибка. я использовал zxing 1.7 и Android SDK 15. Намерение намерения = новое намерение (com.google.zxing.client.android.SCAN); намерение.setClassName(это, com.google.zxing.client.android.CaptureActivity); startActivityForResult(намерение, 0); - person SujayP; 06.02.2012
comment
Вы смешиваете две совершенно разные вещи. Мы настоятельно не рекомендуем использовать метод копирования и вставки из этой записи в блоге, поэтому я не буду помогать вам действовать таким образом. - person Sean Owen; 06.02.2012
comment
Шон, извини за путаницу. Да, я указал две разные вещи, но код, который я скопировал, взят из моего приложения, и этот код работал с zxing 1.7 и Android SDK 9 и был разработан моим коллегой. Теперь мне нужно изменить несколько вещей в приложении, поэтому я взял код из репозитория и работал над zxing 1.7 и SDK 15. Но получил ошибку CaptureActivity not found. Таким образом, начали искать способ Intent интегрировать его. Но я так и не понял, почему неумышленный способ не сработал. В любом случае Большое спасибо за ваше время и оперативную помощь. - person SujayP; 06.02.2012