I am trying to use the cameraKit library to capture an image and save it to my gallery using an onClick method. The onClick method is not working and I can't figure out why, files are not saving to the gallery or the DCIM.
I have added permission for the app to write external storage but this has not made a difference.
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");
}
}
});
}
};