有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android从AsyncTask打开JavaCameraView

我的活动包含4个片段。为了测试的目的,我将JavaCameraView对象分离为AsyncTask,以便更快地在片段之间切换,但并没有什么区别——它仍然是那个么慢。如何减少打开JavaCameraView摄像头的延迟时间?为了满足本文的需要,我将这些类中的代码最小化。所以,如果你还需要什么,尽管问吧

我的一块碎片

public class StageOneFragment extends Fragment implements CameraBridgeViewBase.CvCameraViewListener2 {

public CameraBridgeViewBase kamera;
public BaseLoaderCallback mLoaderCallback;
public View view;

public StageOneFragment() {
    super(R.layout.stage_one);
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    this.view = view
}

@Override
public void onResume() {
    super.onResume();
    new CameraOpenerTask(this).execute();
}

public void configureBaseLoaderCallback() {
    mLoaderCallback = new BaseLoaderCallback(getActivity()) {
        @Override
        public void onManagerConnected(int status) {
            if (status == LoaderCallbackInterface.SUCCESS) {
                Util.setCameraResolutionBasedOnPrefs(resolutionPref, kamera, Objects.requireNonNull(getActivity()));
                kamera.disableView();
                kamera.enableView();
            } else {
                super.onManagerConnected(status);
            }
        }
    };
}

我的任务是:

public class CameraOpenerTask extends AsyncTask<Void, Void, Void> {

private Fragment fragment;

public CameraOpenerTask(Fragment fragment) {
    this.fragment = fragment;
}

@Override
protected Void doInBackground(Void... voids) {
    ((StageOneFragment) fragment).kamera = ((StageOneFragment) fragment).view.findViewById(R.id.java_surface_view);
    ((StageOneFragment) fragment).kamera.setCvCameraViewListener( ((StageOneFragment) fragment));
    ((StageOneFragment) fragment).configureBaseLoaderCallback();
    if (!OpenCVLoader.initDebug())
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_3_0,  ((StageOneFragment) fragment).getActivity(),  ((StageOneFragment) fragment).mLoaderCallback);
    else
        ((StageOneFragment) fragment).mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
    return null;
}
}

共 (0) 个答案