首先
,你的Activity必须实现方法Activity.onActivityResult(int, int, Intent)
,并包含像这样的一行代码:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanResult != null) {
}
...
}
这是您处理扫描结果的位置。
其次
,只需在某个用户操作的响应中调用此函数即可开始扫描过程:
IntentIntegrator integrator = new IntentIntegrator(yourActivity);
integrator.initiateScan();
注意,如果提示用户下载应用程序,则
initiateScan()
将返回一个非空的AlertDialog。这使得调用应用程序可能要管理该对话框。特别是,最好在其
Activity.onPause()
方法中关闭对话框。
您可以使用setTitle(String)
自定义此下载提示对话框的标题(或使用setTitleByID(int)
按字符串资源ID设置标题)。同样,提示消息和是/否按钮标签也可以更改。
最后,您可以使用addExtra(String,Object)
向用于调用扫描仪的Intent添加更多参数。这可用于设置未通过此简化的API直接公开的其他选项。
默认情况下,这将只允许已知正确响应此意图的应用程序这样做。允许响应的应用程序可以使用setTargetApplications(List)进行设置。例如,将其设置为以仅针对Barcode Scanner应用本身进行目标定位。
有关更多详细信息,请参阅此处。
示例代码:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
public class MainActivity extends Activity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button) findViewById(R.id.assistant_button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
integrator.initiateScan();
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanResult != null) {
String re = scanResult.getContents();
Log.d("code", re);
}
}
}
在你的xml中有一个按钮,点击它,扫描条形码,然后它将返回条形码的原始内容。