دليل CameraX مع Kotlin: أمثلة وتطبيقات عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

دليل CameraX مع Kotlin: أمثلة وتطبيقات عملية

1. ما هي مكتبة CameraX ولماذا تستخدمها؟

CameraX هي مكتبة من Google لتطوير تطبيقات الكاميرا على Android، مكتوبة بلغة Kotlin و Java. توفر واجهة برمجة تطبيقات (API) بسيطة ومتسقة للتعامل مع الكاميرا، مما يلغي تعقيد واجهات Camera2 ذات المستوى المنخفض. تحل CameraX العديد من المشكلات التي يواجهها المطورون: دعم إصدارات Android المختلفة، التوافق مع أجهزة الشركات المصنعة المختلفة، إدارة دورة حياة النشاط (Activity) والشظية (Fragment)، ومعالجة تدوير الشاشة.

لماذا تستخدم CameraX؟ أولاً، تبسط عملية التطوير بشكل كبير: بدلاً من كتابة مئات الأسطر البرمجية لإعداد الكاميرا ومعاينة الصور والتقاطها، ستكتب فقط 10-20 سطرًا. ثانيًا، تضمن التوافق مع الأجهزة التي تعمل بنظام Android 5.0 (API 21) فما فوق. ثالثًا، تتعامل CameraX تلقائيًا مع السيناريوهات المعقدة مثل التبديل بين الكاميرات، تغيير الاتجاه، وحفظ الحالة عند تدوير الشاشة. رابعًا، تتضمن المكتبة إضافات مدمجة (Extensions) مثل HDR والوضع الليلي ووضع البورتريه، والتي تعمل على معظم الأجهزة دون إعدادات إضافية.

تعتبر CameraX مثالية للتطبيقات التي تتطلب دمجًا سريعًا للكاميرا: تطبيقات المراسلة، شبكات التواصل الاجتماعي، تطبيقات مسح رموز QR، تطبيقات مكالمات الفيديو، والكاميرات البسيطة. إذا كنت بحاجة إلى تطبيق احترافي مع تحكم كامل في كل إطار (مثل رؤية الكمبيوتر أو التصوير الاحترافي)، فقد تحتاج إلى Camera2، ولكن لـ 90% من المهام، CameraX هي الخيار الأفضل.

2. التثبيت

يتم تثبيت CameraX عبر نظام بناء Gradle. لمشروع Kotlin، أضف التبعيات (dependencies) في ملف build.gradle (Module: app).

الأمر الدقيق (Gradle):

dependencies {
    // Core CameraX
    def camerax_version = "1.3.1"
    implementation "androidx.camera:camera-core:${camerax_version}"
    implementation "androidx.camera:camera-camera2:${camerax_version}"
    implementation "androidx.camera:camera-lifecycle:${camerax_version}"
    implementation "androidx.camera:camera-view:${camerax_version}"

    // إذا كنت بحاجة إلى الإضافات (HDR، الوضع الليلي، إلخ)
    implementation "androidx.camera:camera-extensions:${camerax_version}"

    // للفيديو
    implementation "androidx.camera:camera-video:${camerax_version}"
}

تأكد أيضًا من وجود مستودع Google في ملف build.gradle (Project):

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

بعد إضافة التبعيات، قم بمزامنة المشروع (Sync Now).

3. البداية السريعة — مثال عملي بسيط

أنشئ نشاطًا (Activity) أو شظية (Fragment) جديدًا. في ملف التخطيط (XML)، أضف PreviewView:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.camera.view.PreviewView
        android:id="@+id/viewFinder"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

الآن كود النشاط (Activity) بلغة Kotlin:

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.camera.core.CameraSelector
import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors

class MainActivity : AppCompatActivity() {
    private lateinit var cameraExecutor: E                    

توصيات