2019-pracownia-programowani.../Lookify/app/src/main/java/com/example/lookifyv2/TakePhoto.java

75 lines
2.9 KiB
Java

package com.example.lookifyv2;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import androidx.appcompat.app.AppCompatActivity;
import java.io.File;
//Klasa napisana z pomocą tutorialu dostępnego na https://androidkennel.org/android-camera-access-tutorial/.
public class TakePhoto extends AppCompatActivity {
File photoFile;
String path;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan);
openCamera();
}
//Uruchomienie androidowego modułu kamery.
private void openCamera() {
Intent intent_Camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
photoFile = getOutputMediaFile();
Uri photoFileUri = Uri.fromFile(photoFile); //Zgodny z pewnym standardem łańcuch znaków.
intent_Camera.putExtra(MediaStore.EXTRA_OUTPUT, photoFileUri); //Kamera "wypełnia" przekazany jej pusty plik.
startActivityForResult(intent_Camera, 100); //W przeciwieństwie do startActivity zwraca wynik w postaci Intentu odbieranego
//poniżej.
}
//Jeśli moduł kamery zostanie zamknięty zanim zrobione zostanie zdjęcie to activity skanowania się kończy i "puste" zdjęcie zostaje usunięte,
//w innym razie przechodzi dalej.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
path = photoFile.getAbsolutePath();
if (requestCode == 100) {
if (resultCode == RESULT_CANCELED) {
File filefordeletion = new File(path);
filefordeletion.delete();
finish();
} else {
goDecode();
}
}
}
//Tworzenie katalogu dla danych aplikacji jesli nie istnieje; umieszczanie w nim tymczasowego pliku zdjecia w formacie .jpg.
private static File getOutputMediaFile() {
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "Lookify"); //Pozyskiwanie ścieżki do publicznego katalogu z obrazami z podkatalogiem
//dla naszej aplikacji.
if (!mediaStorageDir.exists()) { //Jeśli katalog z powyższej ścieżki nie istnieje...
if (!mediaStorageDir.mkdirs()) { //...stwórz go; jeśli to niemożliwe, zwróć null.
return null;
}
}
return new File(mediaStorageDir.getPath() + File.separator +
"TEMP" + ".jpg");
}
//Przejście do activity odpowiedzialnego za odczytywanie kodu wraz z przekazaniem jej ścieżki zdjęcia.
private void goDecode(){
Intent intent_Decode = new Intent(this, Decode.class);
intent_Decode.putExtra("takenPic", path);
startActivity(intent_Decode);
finish();
}
}