Добавление возврата результата в BarcodeEye (стеклянный порт ZXing), каково местоположение результата?

Я пытаюсь создать приложение Glass, которое сканирует штрих-код и использует информацию в штрих-коде для открытия определенного документа.

После проблем со сборкой ZXing из исходного кода для Glass я обратился к уже созданному порту под названием BarcodeEye: https://github.com/BarcodeEye/BarcodeEye

Однако кажется, что BarcodeEye не имеет встроенной поддержки для использования его в качестве намерения. Я добавил намерение-действие в манифест. Это позволяет мне вызывать BarcodeEye из моего приложения, но у меня возникают проблемы с вызовом setResult, чтобы получить результат с текстом моего QR из barcodeEye.

Может ли кто-нибудь с опытом работы с ZXing помочь мне понять, почему результат не возвращается и куда поместить код setResult, чтобы правильно вернуть результат.

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

    Intent intent = new Intent("com.github.barcodeeye.SCAN");
       intent.putExtra("SCAN_MODE", "QR_CODE_MODE");//for Qr code, its "QR_CODE_MODE" instead of "PRODUCT_MODE"
       intent.putExtra("SAVE_HISTORY", false);//this stops saving ur barcode in barcode scanner app's history
       startActivityForResult(intent, 0);

И вот мой результирующий класс:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                    String contents = data.getStringExtra("SCAN_RESULT"); //this is the result
                    Log.v("zxing",contents);
            } else 
            if (resultCode == RESULT_CANCELED) {
              // Handle cancel
            }
        }
    }

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

РЕДАКТИРОВАТЬ:

Я смог заставить его работать, добавив фильтр намерений и поместив возвращаемые данные в класс CaptureActivity.java. Это работает для меня, поскольку QR, которые меня интересуют, представляют собой только текст, но я не думаю, что мой текущий метод будет работать в некоторых случаях, поскольку он не пропускает его через фильтр, чтобы проверить, какой это тип QR.

Вот мой манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.chut.glass.xively"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="15" />

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher_xi"
        android:label="@string/app_name" >

        <uses-library
            android:name="com.google.android.glass"
            android:required="true" />

        <activity
            android:name="com.chut.glass.xively.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="com.google.android.glass.action.VOICE_TRIGGER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data
                android:name="com.google.android.glass.VoiceTrigger"
                android:resource="@xml/voice_trigger" />
        </activity>

        <service android:name="com.jessefarebro.mqtt.MqttService" android:exported="false" />

    </application>



</manifest>

Вот где я закончил возвращать данные в CaputreActivity:

// Put up our own UI for how to handle the decoded contents.
private void handleDecodeInternally(Result rawResult, Bitmap barcode) {

    Uri imageUri = null;
    String imageName = IMAGE_PREFIX + System.currentTimeMillis() + ".png";
    Log.v(TAG, "Saving image as: " + imageName);
    try {
        imageUri = mImageManager.saveImage(imageName, barcode);
    } catch (IOException e) {
        Log.e(TAG, "Failed to save image!", e);
    }

    ResultProcessor<?> processor = ResultProcessorFactory
            .makeResultProcessor(this, rawResult, imageUri);

    Intent data = new Intent();
    data.putExtra("SCAN_RESULT", rawResult.toString());
   if (getParent() == null) {
       setResult(Activity.RESULT_OK, data);
       Log.v(TAG,"parent null");
   } else {
       Log.v(TAG,"parent: " + getParent());
       getParent().setResult(Activity.RESULT_OK, data);
   }
   Log.v(TAG,"about to finish");
   finish();
   Log.v(TAG,"post finish");

    //startActivity(ResultsActivity.newIntent(this, processor.getCardResults(), imageUri));
}

person calumb    schedule 11.01.2014    source источник
comment
Вы можете показать мне свой файл манифеста?   -  person Ando Masahashi    schedule 12.01.2014
comment
Что не скомпилировалось из коробки?   -  person Sean Owen    schedule 14.01.2014
comment
У меня были проблемы с компиляцией ZXing из исходного кода (у меня были проблемы, потому что он использует функции Java 7, но я не мог заставить его скомпилировать с выбранной java 7), но BarcodeEye скомпилировался очень хорошо, но при просмотре его манифеста не было встроенные намерения.   -  person calumb    schedule 14.01.2014


Ответы (1)


У меня есть ответвление BarcodeEye, в котором я восстановил/добавил функциональность Intent ZXing: https://github.com/paulpv/BarcodeEye/tree/intent Я открыл запрос на слияние обратно вверх по течению, чтобы посмотреть, примет ли его BarcodeEye. Я также обсуждаю с zxing возможность написания официальной версии GDK Glassware их сканера штрих-кода (CaptureActivity).

person swooby    schedule 22.01.2014
comment
Никто никому не мешает внести порт — вы можете добавить порт прямо сейчас. На моей руке это не произойдет само по себе, так как у меня нет устройства. - person Sean Owen; 22.01.2014
comment
Спасибо за вилку! У меня есть вопрос; Есть ли способ использовать свою вилку для вызова активности Barcodeeye без установки Barcodeye.apk на устройстве? - person netcyrax; 07.04.2014
comment
@swooby Привет! Я немного опоздал, но я считаю ваш ответ и вашу работу очень полезными. Но у меня возникли проблемы с настройкой форматов сканирования для Intent. Я добавляю дополнительную строку SCAN_FORMATS = CODE_128, но все равно ищет только QRCode. Я некоторое время искал в вашем коде и не могу найти, в чем может быть проблема ... Не могли бы вы посоветовать мне это? Ваше здоровье :) - person Remy San; 19.09.2014