75 lines
2.9 KiB
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();
|
|
}
|
|
}
|