1. 项目概述与环境搭建

本章是《Android自定义相机应用从零搭建》实战课程的起点。我们将完成开发环境的安装与配置,创建第一个项目,并深入理解Android项目的核心结构。一个稳定、高效的开发环境是后续所有功能实现的基础。

1.1 课程项目概述

本课程将带领你从零开始,构建一款功能完整的自定义相机应用。你将掌握Camera2 API的核心用法、实时滤镜渲染、拍照与录像、相册管理以及性能优化等关键技能。

模块 核心内容 技术栈
基础搭建 环境配置、项目结构、权限管理 Android Studio, Gradle, Kotlin
相机核心 Camera2 API、预览、拍照、对焦 CameraManager, TextureView
图像处理 实时滤镜、YUV转RGB、GPU渲染 OpenGL ES, Shader
录制与存储 MediaRecorder、文件管理、缩略图 ContentProvider, ExifInterface
高级功能 人脸检测、HDR、手动模式 Camera2 Extensions, ML Kit
课程定位:本课程适合有一定Android基础(熟悉Activity、Fragment、RecyclerView)的开发者。如果你对Kotlin语法尚不熟悉,建议先快速过一遍基础语法。

1.2 Android Studio 安装

Android Studio是官方推荐的集成开发环境(IDE),集成了代码编辑、调试、性能分析、模拟器管理等全套工具链。

安装步骤

  1. 下载安装包:访问 Android Studio 官网,选择对应操作系统的版本(Windows / macOS / Linux)。
  2. 运行安装程序:
    • Windows:运行 android-studio-xxxx.exe,建议勾选 Android Virtual Device 组件。
    • macOS:将 Android Studio.app 拖入 Applications 文件夹。
    • Linux:解压 tar.gz 文件,运行 bin/studio.sh。
  3. 首次启动配置:选择 Standard 安装类型,IDE会自动下载最新SDK和常用工具。
  4. 验证安装:启动后,在 Welcome 界面点击 More Actions > SDK Manager,确认SDK路径已正确设置。
常见问题:Windows用户如果遇到 HAXM 安装失败,请检查BIOS中是否已开启Intel VT-x虚拟化技术。macOS用户若使用Apple Silicon芯片,请选择 ARM64 版本的Android Studio。

1.3 SDK 配置与版本选择

SDK(Software Development Kit)是开发Android应用的核心库集合。合理选择SDK版本直接影响应用的兼容性与功能支持。

SDK 版本 API 级别 Android 版本 本课程建议
compileSdk 34 Android 14 使用最新稳定版,获取最新API支持
minSdk 24 Android 7.0 覆盖95%以上设备,Camera2 API完整
targetSdk 34 Android 14 适配最新系统行为变更

SDK Manager 配置要点

  • SDK Platforms:勾选 Android 14.0 (API 34) 及以下常用版本。
  • SDK Tools:确保 Android SDK Build-Tools、Android Emulator、Android SDK Platform-Tools 已安装。
  • NDK:本课程涉及OpenGL ES渲染,建议安装 NDK (Side by side) 最新版本。
版本选择原则:compileSdk 始终使用最新稳定版,minSdk 根据目标用户群体设定,targetSdk 在发布前更新至最新版以通过应用商店审核。

1.4 创建新项目

我们将创建一个基于 Empty Views Activity 模板的项目,后续所有自定义相机代码都将在此基础上构建。

项目创建步骤

  1. 打开Android Studio,点击 New Project。
  2. 选择 Empty Views Activity 模板,点击 Next。
  3. 填写项目信息:
    • Name:CustomCameraApp
    • Package name:com.example.customcameraapp
    • Language:Kotlin
    • Minimum SDK:API 24 (Android 7.0)
  4. 点击 Finish,等待Gradle同步完成。

初始项目结构

创建完成后,项目面板中会生成以下核心目录与文件:

CustomCameraApp/
├── app/
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/com/example/customcameraapp/
│   │   │   │   ├── MainActivity.kt
│   │   │   │   └── ...
│   │   │   ├── res/
│   │   │   │   ├── layout/
│   │   │   │   │   └── activity_main.xml
│   │   │   │   ├── values/
│   │   │   │   │   ├── strings.xml
│   │   │   │   │   ├── colors.xml
│   │   │   │   │   └── themes.xml
│   │   │   │   └── ...
│   │   │   └── AndroidManifest.xml
│   │   └── test/  (单元测试)
│   │   └── androidTest/  (仪器化测试)
│   ├── build.gradle.kts (Module级)
│   └── ...
├── build.gradle.kts (Project级)
├── settings.gradle.kts
├── gradle.properties
└── local.properties (本地SDK路径)

1.5 项目结构深度解析

理解项目结构是高效开发的前提。下面通过一张架构图展示各模块的职责与依赖关系。

Android项目结构架构图 Android 项目核心结构 CustomCameraApp (根项目) app (主模块) Gradle 构建系统 src/main/java src/main/res AndroidManifest.xml build.gradle.kts settings.gradle.kts gradle.properties 关键说明 app模块包含所有源代码与资源;Gradle系统管理依赖、构建变体与签名配置 APK / AAB (构建产物)

核心目录职责说明

目录/文件 职责 本课程中的用途
src/main/java/ 存放Kotlin/Java源代码 CameraManager、滤镜渲染、UI逻辑
src/main/res/ 存放资源文件(布局、图片、字符串等) 相机预览布局、按钮图标、主题样式
AndroidManifest.xml 声明组件、权限、硬件特性 相机权限、摄像头硬件声明
build.gradle.kts (Module) 模块级构建配置 添加CameraX、OpenGL ES依赖
build.gradle.kts (Project) 项目级构建配置 配置插件版本、仓库地址

1.6 关键配置文件详解

AndroidManifest.xml

这是Android应用的“身份证”,所有组件和权限必须在此声明。对于相机应用,以下配置是必需的:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.customcameraapp">

    <!-- 相机权限 -->
    <uses-permission android:name="android.permission.CAMERA" />
    <!-- 存储权限(Android 10+ 使用分区存储) -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        android:maxSdkVersion="28" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
        android:maxSdkVersion="32" />
    <!-- 录音权限(录制视频需要) -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />

    <!-- 声明相机硬件特性(非必需,但建议) -->
    <uses-feature android:name="android.hardware.camera" android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.CustomCameraApp">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Module 级 build.gradle.kts

这是模块的构建脚本,用于配置依赖、编译选项和构建类型。后续课程中我们将在此添加CameraX、OpenGL ES等依赖。

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
}

android {
    namespace = "com.example.customcameraapp"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.example.customcameraapp"
        minSdk = 24
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = "17"
    }
    buildFeatures {
        viewBinding = true  // 启用视图绑定
    }
}

dependencies {
    implementation("androidx.core:core-ktx:1.12.0")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.11.0")
    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
    // 后续课程将添加:CameraX、OpenGL ES、ExifInterface 等
}
视图绑定(View Binding):本课程全程使用View Binding替代findViewById,它能在编译时生成绑定类,避免空指针异常,提升代码可读性。在build.gradle.kts中启用 buildFeatures.viewBinding = true 即可。

1.7 环境验证与模拟器配置

在开始编码前,务必验证开发环境是否正常工作。推荐使用Android模拟器进行调试,它支持相机模拟功能。

创建模拟器

  1. 点击工具栏 Device Manager 图标,选择 Create device。
  2. 选择 Pixel 6 或 Nexus 5X 等常用设备定义。
  3. 选择系统镜像:推荐 API 34 (Android 14) 的 x86_64 镜像。
  4. 点击 Finish,等待下载完成。

模拟器相机配置

模拟器默认使用虚拟相机(VirtualScene),支持静态图片和动态视频输入。如需测试真实相机效果,可以连接USB摄像头或使用 Android Studio 的 Camera 面板推送自定义图片。

调试技巧:在模拟器中,可以通过 Extended Controls (快捷键 Cmd/Ctrl + M) 中的 Camera 选项卡,选择不同的测试图片或视频流,模拟不同光照和场景。

1.8 本章小结

至此,你已经完成了Android自定义相机开发环境的搭建,并深入理解了项目结构。我们创建了 CustomCameraApp 项目,配置了必要的SDK版本和权限声明,为后续的相机功能开发做好了准备。

任务 完成状态 关键产出
Android Studio 安装 ✅ IDE 运行正常,SDK 路径配置正确
SDK 配置 ✅ compileSdk=34, minSdk=24, targetSdk=34
创建项目 ✅ CustomCameraApp 项目,Kotlin + View Binding
权限声明 ✅ CAMERA, RECORD_AUDIO, 存储权限
模拟器配置 ✅ Pixel 6 API 34 模拟器就绪