Android intent 将结果返回添加到条码眼(ZXing玻璃端口),结果位置是什么?

Android intent 将结果返回添加到条码眼(ZXing玻璃端口),结果位置是什么?,android-intent,zxing,google-glass,google-gdk,Android Intent,Zxing,Google Glass,Google Gdk,我正在尝试创建一个Glass应用程序,它扫描条形码并使用条形码中的信息打开特定文档 在从源代码为Glass构建ZXing时遇到问题后,我转向了一个已经创建的名为BarcodeEye的端口: 然而,BarcodeEye似乎没有内置支持将其用作意图。我在清单中添加了意图操作。这允许我从我的应用程序中调用BarcodeEye,但我在哪里调用setResult以从BarcodeEye中获取带有QR文本的结果方面遇到了问题 有ZXing经验的人能帮助我理解为什么没有返回结果,以及将setResult代码放

我正在尝试创建一个Glass应用程序,它扫描条形码并使用条形码中的信息打开特定文档

在从源代码为Glass构建ZXing时遇到问题后,我转向了一个已经创建的名为BarcodeEye的端口:

然而,BarcodeEye似乎没有内置支持将其用作意图。我在清单中添加了意图操作。这允许我从我的应用程序中调用BarcodeEye,但我在哪里调用setResult以从BarcodeEye中获取带有QR文本的结果方面遇到了问题

有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
            }
        }
    }
任何关于如何获得适当活动结果的帮助都将不胜感激

编辑:

通过添加intent过滤器并将数据返回放到
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));
}
//为如何处理解码内容提供我们自己的UI。
私有void以内部方式处理(结果rawResult、位图条形码){
Uri-imageUri=null;
字符串imageName=IMAGE_前缀+System.currentTimeMillis()+“.png”;
Log.v(标记“将图像另存为:”+imageName);
试一试{
imageUri=mImageManager.saveImage(图像名称、条形码);
}捕获(IOE异常){
Log.e(标记“未能保存图像!”,e);
}
ResultProcessor processor=ResultProcessor工厂
.makeResultProcessor(this、rawResult、imageUri);
意向数据=新意向();
data.putExtra(“扫描结果”,rawResult.toString());
如果(getParent()==null){
setResult(Activity.RESULT_OK,数据);
Log.v(标记“父空”);
}否则{
Log.v(标记“parent:+getParent());
getParent().setResult(Activity.RESULT_OK,数据);
}
Log.v(标签“即将完成”);
完成();
日志v(标签“后饰面”);
//startActivity(ResultsActivity.newIntent(this,processor.getCardResults(),imageUri));
}

我有一个BarcodeEye分叉,在其中我恢复/添加了ZXing的意向功能: 我已经打开了一个向上游撤回的请求,看看BarcodeEye是否会接受。
我也在讨论w/zxing是否有可能编写官方GDK玻璃器皿版本的条形码扫描仪(CaptureActivity)

你能给我看一下你的menifest文件吗?有什么东西没有开箱编译?我从源代码编译zxing时遇到了麻烦(我遇到了麻烦,因为它使用了Java 7的特性,但我无法让它在选择Java 7的情况下进行编译),但是BarcodeEye编译得很好,但是在查看其清单时,没有内置的意图。没有人阻止任何人贡献一个端口——欢迎您现在添加该端口。由于我没有该设备,它不会在我的手上单独发生。谢谢您的分叉!但是我有一个问题;您有什么办法可以解决吗n在设备上没有安装Barcodeye.apk的情况下,使用你的fork调用Barcodeye活动?@swooby嗨!我有点晚了,但我发现你的答案和你的工作非常有用。但是我在设置扫描格式时遇到了问题。我额外添加了一个字符串“scan_formats”=“CODE_128”但是,它仍然只查找QRCode。我已经在您的代码中查找了一段时间,但无法找到问题所在…您能就此向我提供建议吗?干杯:)