Фрагменты Android Force Stopping

Я новичок в разработке Android и TensorFlow. Я только начал изучать фрагменты, и я пытаюсь реализовать Tensor-поток, так как это мое производственное обучение. Я использую камеру, чтобы сделать снимок, а затем с помощью тензорного потока предсказать, какой тип изображения захватывается.

Всякий раз, когда я компилирую приложение, оно запускается, но когда я выполняю этот фрагмент, приложение закрывается. Может кто-нибудь направить меня, где я не прав? Приложение силы закрывается.

package com.industrial.shamshahsan.smitindustrialtraining;

import android.app.Fragment;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.method.ScrollingMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import android.view.Gravity;

import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.wonderkiln.camerakit.CameraKitError;
import com.wonderkiln.camerakit.CameraKitEvent;
import com.wonderkiln.camerakit.CameraKitEventListener;
import com.wonderkiln.camerakit.CameraKitImage;
import com.wonderkiln.camerakit.CameraKitVideo;
import com.wonderkiln.camerakit.CameraView;

import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

public class SecondFragment extends Fragment {

View view;
private static final String MODEL_PATH = "mobilenet_quant_v1_224.tflite";
private static final String LABEL_PATH = "labels.txt";
private static final int INPUT_SIZE = 224;

private Classifier classifier;

private Executor executor = Executors.newSingleThreadExecutor();
private TextView textViewResult;
private TextView marquee;
private Button btnDetectObject, btnToggleCamera;
private ImageView imageViewResult;
private CameraView cameraView;


@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState){
    super.onViewCreated(view,savedInstanceState);
    getActivity().setTitle("Project");
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.second_layout, container, false);


    cameraView = view.findViewById(R.id.cameraView);
    marquee = view.findViewById(R.id.groupDetails);
    marquee.setSelected(true);
    imageViewResult = view.findViewById(R.id.imageViewResult);
    textViewResult = view.findViewById(R.id.textViewResult);
    textViewResult.setMovementMethod(new ScrollingMovementMethod());

    btnToggleCamera = view.findViewById(R.id.btnToggleCamera);
    btnDetectObject = view.findViewById(R.id.btnDetectObject);

    cameraView.addCameraKitListener(new CameraKitEventListener() {
        @Override
        public void onEvent(CameraKitEvent cameraKitEvent) {

        }

        @Override
        public void onError(CameraKitError cameraKitError) {

        }

        @Override
        public void onImage(CameraKitImage cameraKitImage) {

            Bitmap bitmap = cameraKitImage.getBitmap();

            bitmap = Bitmap.createScaledBitmap(bitmap, INPUT_SIZE, INPUT_SIZE, false);

            imageViewResult.setImageBitmap(bitmap);

            final List<Classifier.Recognition> results = classifier.recognizeImage(bitmap);

            textViewResult.setText(results.toString());

        }

        @Override
        public void onVideo(CameraKitVideo cameraKitVideo) {

        }
    });

    btnToggleCamera.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            cameraView.toggleFacing();
        }
    });

    btnDetectObject.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            cameraView.captureImage();
        }
    });


    return view;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);




    initTensorFlowAndLoadModel();





    Toast errormsg = Toast.makeText(getActivity(), "Error!", 5000);
    errormsg.setGravity(Gravity.CENTER, 0, 0);
    errormsg.show();

}
public void initTensorFlowAndLoadModel() {
    executor.execute(new Runnable() {
        @Override
        public void run() {
            try {
                classifier = TensorFlowImageClassifier.create(
                        getActivity().getAssets(),
                        MODEL_PATH,
                        LABEL_PATH,
                        INPUT_SIZE);
                        makeButtonVisible();
            } catch (final Exception e) {
                throw new RuntimeException("Error initializing TensorFlow!", e);
            }
        }
    });
}
private void makeButtonVisible() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            btnDetectObject.setVisibility(View.VISIBLE);
        }
    });
}

private void runOnUiThread(Runnable runnable) {
    runnable.run();
}

}

0 ответов

Другие вопросы по тегам