所以我使用https://github.com/journeyapps/zxing-android-embedded将条形码扫描程序嵌入到我的应用程序中。问题是它需要一段时间才能启动,2到4秒。在那个时候UI挂起,我把它添加到AsyncTask并且UI不再挂起,但我添加到AsychTask的progressdialog没有显示。当我向doInBackground添加一个thread.sleep时,对话框会显示,但是当thread.sleep结束时再次挂起。任何人都知道如何让用户知道扫描仪正在加载?
class loadScanner extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute(){
progress = new ProgressDialog(MainActivity.this);
progress.setTitle("Loading");
progress.setMessage("Wait while loading scanner...");
progress.setCancelable(false);
progress.setIndeterminate(true);
progress.show();
}
@Override
protected Void doInBackground(Void... params) {
integrator = new IntentIntegrator(MainActivity.this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES);
integrator.setWide();
integrator.setOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
integrator.initiateScan();
return null;
}
@Override
protected void onPostExecute(Void result) {
progress.dismiss();
}
}
答案 0 :(得分:0)
将微调器代码移出AsyncTask。 在异步任务上调用.execute之前将其放入。
答案 1 :(得分:0)
我遇到了同样的问题!
修复它以更新zxing版本!
Gradle刚刚提出了以下问题:
compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
compile 'com.google.zxing:core:3.2.1'