有没有办法在完成后运行我的 AsyncTask ?
我的应用程序是捕获图像并将其放在 imagView 上,然后在其上执行 AsyncTask。我有另一个按钮来拍摄另一张照片,然后将其放置无法执行 AysncTask。
我知道表单 developer.Android AsyncTask 只能执行一次。
这是我的代码。
package com.ocr.id;
import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.ocr.id.ip.AndroidImage;
import com.ocr.id.ip.Binarization;
import com.ocr.id.ip.Crop;
import com.ocr.id.ip.Segement;
public class PreviewActivity extends Activity {
private ImageView previewIV;
private final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
private String path;
private boolean crop = true;
private boolean resample = true;
Crop cropID;
Binarization binary;
Segement seg;
ProgressDialog previewPD;
OnClickListener processOnClickListener = new OnClickListener() {
public void onClick(View v) {
segementTask task = new segementTask();
task.execute(path);
}
};
private OnClickListener backOnClickListener = new OnClickListener() {
public void onClick(View v) {
startActivityForResult(
new Intent(MediaStore.ACTION_IMAGE_CAPTURE).putExtra(
MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(path))),
CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
};
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
previewIV.setImageBitmap(AndroidImage
.decodeSampledBitmapFromSDcard(path, 1000, 1000));
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.preview);
path = getIntent().getExtras().getString("path");
previewIV = (ImageView) findViewById(R.id.previewPicID);
Button process = (Button) findViewById(R.id.processID);
process.setOnClickListener(processOnClickListener);
Button back = (Button) findViewById(R.id.back);
back.setOnClickListener(backOnClickListener);
previewIV.setImageBitmap(AndroidImage.decodeSampledBitmapFromSDcard(
path, 1000, 1000));
}
class segementTask extends AsyncTask<String, Integer, Void> {
@Override
protected void onPreExecute() {
previewPD = ProgressDialog.show(PreviewActivity.this, "Id-OCR",
"Processing...");
previewPD.setCancelable(false);
super.onPreExecute();
}
@Override
protected Void doInBackground(String... params) {
try {
seg = new Segement(PreviewActivity.this, params[0]);
seg.segmentNumbers();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
previewPD.dismiss();
previewPD = null;
Toast.makeText(PreviewActivity.this, "Processing done",
Toast.LENGTH_LONG).show();
super.onPostExecute(result);
}
}
}