Android intent 将结果返回添加到条码眼(ZXing玻璃端口),结果位置是什么?
我正在尝试创建一个Glass应用程序,它扫描条形码并使用条形码中的信息打开特定文档 在从源代码为Glass构建ZXing时遇到问题后,我转向了一个已经创建的名为BarcodeEye的端口: 然而,BarcodeEye似乎没有内置支持将其用作意图。我在清单中添加了意图操作。这允许我从我的应用程序中调用BarcodeEye,但我在哪里调用setResult以从BarcodeEye中获取带有QR文本的结果方面遇到了问题 有ZXing经验的人能帮助我理解为什么没有返回结果,以及将setResult代码放在哪里以正确返回结果 以下是我在应用程序中调用BarcodeEye的代码: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代码放
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。我已经在您的代码中查找了一段时间,但无法找到问题所在…您能就此向我提供建议吗?干杯:)