Java Android无法完成活动
我正在使用OpenCV android库编写一个应用程序。我已经创建了一个CameraActivity,我想调用它,并返回一个图像Java Android无法完成活动,java,android,opencv,Java,Android,Opencv,我正在使用OpenCV android库编写一个应用程序。我已经创建了一个CameraActivity,我想调用它,并返回一个图像 public class CameraActivity extends Activity implements CvCameraViewListener2 { private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public vo
public class CameraActivity extends Activity implements CvCameraViewListener2 {
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS: {
Log.i(TAG, "OpenCV loaded successfully");
mOpenCvCameraView.enableView();
}
break;
default: {
super.onManagerConnected(status);
}
break;
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
...
Button snap = (Button) findViewById(R.id.snap);
snap.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
processVideo();
}
});
snap.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
processPicture();
return true;
}
});
}
@Override
public void onPause() {
...
}
@Override
public void onResume() {
...
}
public void onDestroy() {
...
}
public void onCameraViewStarted(int width, int height) {
...
}
@Override
public void onCameraViewStopped() {
...
}
public Mat onCameraFrame(CvCameraViewFrame cvf) {
// Grab frame
cvf.rgba().copyTo(frame);
// Filter frame
filterLaser();
// Retrieve contour center point
contourLaser();
// Draw
draw();
// Display the result.
return cvf.rgba();
}
private void draw(){
...
}
private void filterLaser(){
...
}
void processVideo(){
...
}
void processPicture(){
Intent result = new Intent();
if(frame != null)
{
// Convert the processed Mat to Bitmap
Bitmap resultBitmap = Bitmap.createBitmap(frame.cols(), frame.rows(),Bitmap.Config.ARGB_8888);;
Utils.matToBitmap(frame, resultBitmap);
setResult(Activity.RESULT_OK, result);
result.putExtra("BITMAP", resultBitmap);
} else {
setResult(Activity.RESULT_CANCELED); // No frame found
}
Log.d("LastPoint", "FINISHED");
finish();
}
};
在MainActivity中使用以下代码调用此活动
并在MainActivity中提取结果
@凌驾
ActivityResultant请求代码、int-resultCode、意图数据上的公共无效{
Log.dLastPoint,写入
完成后会被打印到logcat上,而书写不是。
为什么我不能退出CameraActivity?视图本身也没有关闭。问题在于行:
通过在my CameraActivity中将图片保存到sdcard并通过结果意图传递Uri来解决此问题。您应该在setResultActivity.result\u OK,result;之前使用result.PuterBitmap,resultBitmap;,而不是之后使用。谢谢!但这并不能解决我的问题。您是否尝试将日志放入ifframe!=null{}布洛克,确定它通过了吗?我通过了,再次验证。它通过了。检查
Button reply = (Button) findViewById(R.id.buttonReply);
reply.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), CameraActivity.class);
startActivityForResult(i, CAMERAREQUEST);
}
});
switch(requestCode) {
case (CAMERAREQUEST) :
if (resultCode == Activity.RESULT_OK) {
Bitmap bmp = (Bitmap) data.getParcelableExtra("Bitmap");
writeBitmap(bmp);
}
break;
}
}
result.putExtra("BITMAP", resultBitmap);