Kamera amaçları

Cihazın varsayılan kamera uygulamasını kullanarak fotoğraf veya video çekme gibi temel kamera işlemlerini gerçekleştirmek için bir kamera kitaplığıyla entegrasyon yapmanız gerekmez. Bunun yerine Intent kullanın.

Kamera uygulamasıyla fotoğraf çekme

Android, Intent çağrısı yaparak işlemleri diğer uygulamalara atar. Bu işlem üç parçadan oluşur: Intent'nin kendisi, harici Activity'u başlatma çağrısı ve odak etkinliğinize geri döndüğünde resim verilerini işleyen bazı kodlar.

Fotoğraf çekmek için Intent işlevini çağıran bir işlev aşağıda verilmiştir.

Kotlin

val REQUEST_IMAGE_CAPTURE = 1
 
private fun dispatchTakePictureIntent() {
    val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    try {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
    } catch (e: ActivityNotFoundException) {
        // display error state to the user
    }
}

Java

static final int REQUEST_IMAGE_CAPTURE = 1;
 
private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    try {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    } catch (ActivityNotFoundException e) {
        // display error state to the user
    }
}

Kamera uygulamasıyla video kaydı yapma

Video çekmek için Intent de kullanabilirsiniz.

Kotlin

val REQUEST_VIDEO_CAPTURE = 1
 
private fun dispatchTakeVideoIntent() {
    Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent ->
        takeVideoIntent.resolveActivity(packageManager)?.also {
            startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE)
        } ?: run {
          //display error state to the user
        }
    }
}

Java

static final int REQUEST_VIDEO_CAPTURE = 1;
 
private void dispatchTakeVideoIntent() {
    Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
    }
    else {
      //display error state to the user
    }
}

startActivityForResult() yöntemi, Intent öğesini işleyebilecek ilk etkinlik bileşenini döndüren resolveActivity() yöntemini çağıran bir koşulla korunur. Uygulamanızı kilitlemeyecek bir Intent çağırdığınızdan emin olmak için bu kontrolü yapın.

Ek Kaynaklar

Temel kamera işlemleri için Intent kullanın. Aksi takdirde, temel resim veya video çekiminden daha karmaşık işlemler için Camera2 ve CameraX kitaplıklarını kullanmanız önerilir.