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 Kamera kitaplığı ile entegrasyon yapmanız gerekmez. Bunun yerine Intent kullanın.

Kamera uygulamasıyla fotoğraf çekme

Android, Intent yöntemini çağırarak diğer uygulamalara işlemler için yetki verir. Bu süreç üç bölümden oluşur: Intent öğesinin kendisi, harici Activity işlemini başlatmak için bir çağrı ve odak etkinliğinize döndüğünde resim verilerini işlemek için bir kod.

Fotoğraf çekmek için Intent çağıran bir işlevi burada görebilirsiniz.

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 kaydetme

Video çekmek için Intent çağırabilirsiniz.

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, resolveActivity() yöntemini çağıran bir koşul tarafından korunur. Bu koşul, Intent öğesini işleyebilecek ilk etkinlik bileşenini döndürür. Uygulamanızın kilitlenmesine neden olmayacak bir Intent çağırdığınızdan emin olmak için bu kontrolü gerçekleştirin.

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.