2016-08-02 10 views
-2

Я работаю над приложением, которое включает в себя сканирование штрих-кодов. До сих пор я успешно проверил штрих-коды, используя предварительный просмотр камеры, следуя ниже. link https://github.com/ZBar/ZBarИспользование zbar для сканирования изображений штрих-кода?

Однако способ, которым это работает, действительно не соответствует моим потребностям. В этом примере используется предварительный просмотр камеры. Однако в моем проектном приложении у меня есть приложение, позволяющее пользователям получать доступ к камере одним нажатием кнопки (Intent).

После этого он преобразует захваченные изображения в массив байтов.

Можно ли использовать Zbar для сканирования изображений (байтовые массивы) вместо этого? Или в любом случае использовать Zbar с камерой Android вместо предварительного просмотра камеры?

Thank you.

Это мой MainActivity.java, который позволяет пользователям получать доступ к камере с помощью намерения.

public class MainActivity extends Activity { 

Button cameraBtn; 
final int REQUEST_IMAGE_CAPTURE = 1; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    cameraBtn = (Button)findViewById(R.id.cameraBtn); 

    cameraBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, REQUEST_IMAGE_CAPTURE); 
     } 
    }); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 
     Bitmap imageBitmap = (Bitmap) extras.get("data"); 
    } 
}} 

ответ

0

Zbar ЛИЭС делает вашу работу легче, унаследовав все функциональные возможности камеры. Однако вы можете создать свою собственную Camera/CameraPreview для сканирования штрих-кодов с использованием Zbar api's.

Ниже фрагменты кода объясняют, как Zbar сканирует ваш штрих-код для каждого кадра. onPreviewFrame обратный вызов дает вам каждый кадр, захваченный вашей камерой.

public void onPreviewFrame(byte[] data, Camera camera) { 
      Camera.Parameters parameters = camera.getParameters(); 
      Size size = parameters.getPreviewSize(); 

      Image barcode = new Image(size.width, size.height, "Y800"); 
      barcode.setData(data); 

      int result = scanner.scanImage(barcode); 
      if (result != 0) { 
       SymbolSet syms = scanner.getResults(); 
       for (Symbol sym : syms) { 
        Log.v("", sym.getData()); 
       } 
      } 
} 

Здесь вам нужно создать свою собственную деятельность камеры, которая подменяет onPreviewFrame callabck. Кроме того, вам необходимо загрузить библиотеку iconv (часть Zlib), экземпляр экземпляра сканера.

static { 
    System.loadLibrary("iconv"); 
} 

ImageScanner scanner = new ImageScanner(); 
scanner.setConfig(0, Config.X_DENSITY, 3); 
scanner.setConfig(0, Config.Y_DENSITY, 3);