2012-07-04 3 views
0

Я новичок в android. Я пытаюсь разработать сканер штрих-кода, который работает следующим образом: Снимайте изображение (штрих-кода) через камеру и просматривайте это изображение штрих-кода. мой вопрос: как я могу это сделать? Заранее спасибоBarcode image Сканер

Вот мой код:

TextView result_text; 
Button scan_btn; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    result_text = (TextView)findViewById(R.id.Result_tv); 

    scan_btn = (Button)findViewById(R.id.Barcode_Scan_Button); 
    scan_btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent scanIntent= new Intent("com.google.zxing.client.android.SCAN"); 
      scanIntent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 

      startActivityForResult(scanIntent, 0); 

     } 
    }); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 

     if (requestCode == 0) { 


      if (resultCode == RESULT_OK) { 

      result_text.setText(intent.getStringExtra("SCAN_RESULT")); 

      } else if (resultCode == RESULT_CANCELED) { 

      result_text.setText("Scan cancelled."); 

      } 

     } 

     } 

    } 

ответ

2

Исследование http://code.google.com/p/zxing/

Во всяком случае, проблема достаточно сложна, это делается с помощью IIRC fouriers, обнаружение края, матричные вычисления и т.д. Плюс есть много стандартов. Подготовьте на месяц (ы) работы.

4

@Zain подход вы принимаете строго не рекомендуется.

В соответствии с их руководством вы не должны явно называть Scan Intent.

Вы должны использовать новый класс IntentIntegrator, выпущенный zxing.

Здесь вы идете

Сначала нужно добавить код для вызова Намерение:

IntentIntegrator integrator = new IntentIntegrator(yourActivity); 
integrator.initiateScan(); 

Скачать IntentIntegrator класс из ниже ссылке.

http://code.google.com/p/zxing/source/browse/trunk/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java

Во-вторых, добавить к вашей деятельности для обработки результата:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
    if (scanResult != null) { 
    // handle scan result 
    } 
    // else continue with any other code you need in the method 
    ... 
} 

инвестировать свое время, чтобы пройти через вики-странице Zxing.They объяснили это очень хорошо.

http://code.google.com/p/zxing/w/list

http://code.google.com/p/zxing/wiki/ScanningViaIntent

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

http://code.google.com/p/zxing/source/browse/trunk/androidtest/src/com/google/zxing/client/androidtest/ZXingTestActivity.java

Наконец Test Project + Библиотека находится в

http://code.google.com/p/zxing/source/browse/trunk#trunk%2Fandroid-integration%253Fstate%253Dclosed

+0

я путать о том, как получить изображение с камеры и передать его в сканер для сканирования ... – zain

+0

IntentIntegrator интегратором = новый IntentIntegrator (yourActivity); integrator.initiateScan(); Я вызываю его onCreate, я получаю ошибку, когда я пытаюсь заменить yourActivity моим именем класса avtivity. – zain

+0

@ Закройте пример приложения, которое они предоставили. Это даст вам указания. –