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) 个答案