Dzień dobry,
posiadam Activity, które hostuje 4 fragmenty i przełącza między nimi za pomocą BottomNavigationDrawer. Dla potrzeb testów odseparowałem obiekt JavaCameraView do AsyncTaska aby uzusyać szybsze przełączanie pomiędzy fragmentami ale niestety nie odczuwam żadnej różnicy - jest wciąż dość powoli jak było (ok. 1 sekunda). Pytanie więc jak mogę zredukować czas otwarcia kamery JavaCameraView poprawiając ten kod? Zminimalizowałem ilość kodu w klasie Fragmentu do minimum aby było czytelnie. Jeśli czegoś jeszcze potrzeba to dorzucę.
Oto wspomniany jeden z moich fragmentów:
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);
}
}
};
}
oraz mój AsyncTask:
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;
}
}
będę bardzo wdzięczny za podpowiedzi i rozwiązania. Pozdrawiam cieplutko! :)