Intereting Posts
Может ли мой сервер получать подтверждение от GCM, как только сообщение отправлено в приложение Android? Проблемы с типом активности Как передать ArrayList <HashMap <String, String >> из одной активности в другую Служба Restful API Android Присоединение файла к GMAIL – Не удается подключить пустой файл Как изменить цвет фона меню ActionBar (андроид 4 и 5) Как проверить подключение к Интернету в сети в Android (используя интернет другого устройства через HOTSPOT) CrossWalk Webview не запускает URL Пользовательский стиль меню переполнения CAB ItemTouchHelper сделать перетаскиваемый элемент переместить нижний колонтитул фрагмента Должен ли я использовать PhoneGap вместо наращивания на Android SDK? Следующая кнопка в клавиатуре не отображается Реализация onScrollListener для обнаружения конца прокрутки в ListView Ионные запросы возвращают 404 только на Android, в Chrome он отлично работает Выполнение команд adb на всех подключенных устройствах

Сканирование QR-кода с использованием Android Mobile Vision API

Я последовал этому руководству о том, как создать приложение для Android, которое может сканировать QR-коды.

Вот полный код. Я добавил сервисы Google Play с помощью класса, например, compile 'com.google.android.gms:play-services:7.8.0' .

AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="bitinvent.io.qrscanner" > <meta-data android:name="com.google.android.gms.vision.DEPENDENCIES" android:value="barcode"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.CAMERA"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <SurfaceView android:id="@+id/cameraView" android:layout_width="640px" android:layout_height="480px" android:layout_centerVertical="true" android:layout_alignParentLeft="true"/> <TextView android:id="@+id/infoTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/cameraView" android:layout_marginLeft="16dp" android:text="Nothing to read" android:textSize="20sp"/> </RelativeLayout> 

MainActivity.java

 package bitinvent.io.qrscanner; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.util.SparseArray; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.widget.TextView; import com.google.android.gms.vision.CameraSource; import com.google.android.gms.vision.Detector; import com.google.android.gms.vision.barcode.Barcode; import com.google.android.gms.vision.barcode.BarcodeDetector; import java.io.IOException; public class MainActivity extends Activity { private SurfaceView cameraView; private TextView barcodeInfo; private CameraSource cameraSource; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cameraView = (SurfaceView) findViewById(R.id.cameraView); barcodeInfo = (TextView) findViewById(R.id.infoTextView); BarcodeDetector detector = new BarcodeDetector.Builder(this).setBarcodeFormats(Barcode.QR_CODE).build(); cameraSource = new CameraSource.Builder(this, detector).setRequestedPreviewSize(640, 480).build(); cameraView.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { try { cameraSource.start(cameraView.getHolder()); } catch (IOException e) { Log.e("CAMERA SOURCE", e.getMessage()); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { cameraSource.stop(); } }); detector.setProcessor(new Detector.Processor<Barcode>() { @Override public void release() { } @Override public void receiveDetections(Detector.Detections<Barcode> detections) { final SparseArray<Barcode> barcodes = detections.getDetectedItems(); if (barcodes.size() != 0) { barcodeInfo.post(new Runnable() { @Override public void run() { barcodeInfo.setText(barcodes.valueAt(0).displayValue); } }); } } }); } } 

Я тестировал это на HTC Desire 816 под управлением Android 4.4.2. Но, похоже, это не работает. Вид камеры активен, но при указании на QR-код он ничего не обнаруживает. Но ошибок и сбоев не происходит.

Я что-то упускаю?

Solutions Collecting From Web of "Сканирование QR-кода с использованием Android Mobile Vision API"

Я новичок в разработке Android, но я следил за учебником, используя игровые сервисы 8.1. Работал.

Код очень похож на ваш. Единственное отличие заключается в том, что у меня есть метатег под уровнем приложения, и я удалил .setBarcodeFormats (Barcode.QR_CODE), поскольку он ограничивает его специфическими кодами QR-кода.

Также использовалось приложение в пейзаже, так как портрет не работал на меня. Даже в ландшафте для QR-кодов мне иногда приходилось медленно перемещать QR-код от камеры, пока он не смог ее распознать.