当前位置: 首页 > 知识库问答 >
问题:

安卓无法终结activity

闾丘永春
2023-03-14

我正在用OpenCV android库写一个应用程序。我创建了一个CameraActivity,我想调用它,并返回一个图像。

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中的以下代码调用此activity。

  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);
        }
    });

并在MainActivity中提取结果。

@override public void onActivityResult(int requestCode,int resultCode,Intent data){log.d(LastPoint),“Writing);

    switch(requestCode) {
        case (CAMERAREQUEST) : 
            if (resultCode == Activity.RESULT_OK) {
                Bitmap bmp = (Bitmap) data.getParcelableExtra("Bitmap");

                writeBitmap(bmp);
            }
            break;
    }
}

“finished”将打印到logcat。“写作”不是。为什么我不能退出摄像活动?视图本身也不会关闭。

共有1个答案

穆建元
2023-03-14

问题出在台词上:

    result.putExtra("BITMAP", resultBitmap);

通过将图片保存到我的CameraActivity中的sdcard并通过结果意图传递Uri来解决这个问题。

 类似资料:
  • 我有一个做片段交易的activity 很管用。现在,我知道在我的activity中有一个动态字符串,我需要在NewFragment中的布局中替换。我想我可以在transaction.commit()之后调用类似于 在newFragment.java中 关键是getActivity()返回null。如何获得查找布局元素所需的上下文? 编辑: 我试图遵循使用捆绑的路线,因为这似乎是最干净的方式。所以我

  • 8.22一面 因为自己安卓学的很少 面试官问的安卓都是基础的,万分感谢面试官 安卓四大组件, Activity生命周期,启动模式 安卓进程通信 实现线程安全的方式 常用的数据结构--> hashset与hashMap JAVA引用类型 内存泄漏 内存回收算法 计网: TCP,UDP tcp如何保证可靠 ---------------------- 虽然一面面试官说还有二轮技术面,但是没有,直接终面

  • 安卓应用可以拍照但是不能录像,点击录像会有调用摄像头的提醒,和照相一样,但是无法切换到摄像界面。拍照倒是可以直接切换到手机的拍照界面,正常使用。查看了权限都是设置了的 AndroidManifest.xml文件权限列表如下 在模拟器上的表现是可以跳转到摄像界面,但是一点录像就崩溃,只能原生录像然后上传 在实机上是点击录像无法跳转过去,甚至有些机型直接应用闪退

  • 在我的控制器中,我有两个endpoint,其中一个是安全的,另一个是公共的: 仅当我已记录且具有正确角色的令牌放置在请求标头中时,受保护的终结点才有效。但是,当我想在没有令牌的情况下访问公共终结点时,我总是得到状态401,但有错误 需要完全身份验证才能访问此资源 这是我的安全配置: 和授权服务器配置: 我还尝试将更改为:没有更改。我的首选方法是使用注释处理安全性。谢谢。

  • 使用protobuf版本2.6.1(我通过自制软件安装) 我想跑 我一直收到这个错误。 我的go路径中安装了protoc gen go。还有其他人有这个问题吗?

  • 开发的终端用的是安卓11, 这个版本的安卓支持Flutter吗?

  • 当我像这样在终端上输入时: 它向我展示了这样的错误: 错误:安装cocoapods错误:错误:无法构建gem本机扩展。 /系统/库/框架/Ruby。framework/Versions/2.6/usr/bin/ruby-I/Library/ruby/Site/2.6.0-r/siteconf20201203-2632-pfzsbj。rb extconf。rb正在检查外国金融机构。h、 ..**ex

  • BAMS是一个完全开源的政企信息管理系统基础框架。它是轻量级的,简单易学的(学习成本真的很低,没有extjs,没有easyUI,没有繁琐的js UI库。只要java基础扎实,再稍懂一点js即可,真的是为java开发人员量身定制的一套框架啊),框架以Spring Framework为核心、Jsp+Dwr作为模型视图控制器、Hibernate作为数据库操作层。 BAMS已内置 一系列企业信息管理系统的