Метод onClick не работает для захвата изображений и файлов, не сохраняемых в галерее - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь использовать библиотеку cameraKit для захвата изображения и сохранения его в моей галерее с помощью метода onClick. Метод onClick не работает, и я не могу понять, почему файлы не сохраняются в галерее или DCIM.

Я добавил разрешение для приложения на запись во внешнее хранилище, но это не имело значения.

package com.example.camerakitqr;



public class Scanner extends AppCompatActivity {
private CameraKitView cameraKitView;
private Button  detectButton;
//GraphicOverlay graphicOverlay;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    cameraKitView = findViewById(R.id.camera);
    detectButton = findViewById(R.id.detectButton);
    detectButton.setOnClickListener(detectOnClickListener);

}

@Override
protected void onStart() {
    super.onStart();
    cameraKitView.onStart();

}

@Override
protected void onResume() {
    super.onResume();
    cameraKitView.onResume();
}

@Override
protected void onPause() {
    cameraKitView.onPause();
    super.onPause();
}

@Override
protected void onStop() {
    cameraKitView.onStop();
    super.onStop();
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    cameraKitView.onRequestPermissionsResult(requestCode, permissions, grantResults);
}








private View.OnClickListener detectOnClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
         cameraKitView.captureImage(new CameraKitView.ImageCallback() {
             @Override
             public void onImage(CameraKitView cameraKitView, byte[] photo ) {

                  File savedPhoto = new File(Environment.getExternalStorageDirectory(), "photo.jpg");
                  try{
                      FileOutputStream outputStream = new FileOutputStream(savedPhoto.getPath());
                      outputStream.write(photo);
                      outputStream.close();
                      Toast.makeText(getApplicationContext(), "File saved", Toast.LENGTH_SHORT).show();
                  } catch (java.io.IOException e){
                      e.printStackTrace();
                      Log.e("DEMO", "Not saved");
                  }


            }
         });


    }


};

1 Ответ

0 голосов
/ 20 июня 2019

Да, вы правы, вы добавили разрешения в свой манифест, но если ваше устройство Android 6+, вам следует проверить разрешение во время выполнения.В вашем коде я не смог найти эту часть. Официальный сайт разработчиков Android объясняет, как запрашивать разрешения во время выполнения.Надеюсь, поможет.

Вы должны спросить разрешения для использования камеры, а также для сохранения фотографии (ЧИТАТЬ / ЗАПИСАТЬ на внешнее хранилище)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...