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 |
1.2 Android Studio 安装
Android Studio是官方推荐的集成开发环境(IDE),集成了代码编辑、调试、性能分析、模拟器管理等全套工具链。
安装步骤
- 下载安装包:访问 Android Studio 官网,选择对应操作系统的版本(Windows / macOS / Linux)。
- 运行安装程序:
- Windows:运行
android-studio-xxxx.exe,建议勾选 Android Virtual Device 组件。 - macOS:将
Android Studio.app拖入 Applications 文件夹。 - Linux:解压
tar.gz文件,运行bin/studio.sh。
- Windows:运行
- 首次启动配置:选择 Standard 安装类型,IDE会自动下载最新SDK和常用工具。
- 验证安装:启动后,在 Welcome 界面点击 More Actions > SDK Manager,确认SDK路径已正确设置。
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) 最新版本。
1.4 创建新项目
我们将创建一个基于 Empty Views Activity 模板的项目,后续所有自定义相机代码都将在此基础上构建。
项目创建步骤
- 打开Android Studio,点击 New Project。
- 选择 Empty Views Activity 模板,点击 Next。
- 填写项目信息:
- Name:CustomCameraApp
- Package name:com.example.customcameraapp
- Language:Kotlin
- Minimum SDK:API 24 (Android 7.0)
- 点击 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 项目结构深度解析
理解项目结构是高效开发的前提。下面通过一张架构图展示各模块的职责与依赖关系。
核心目录职责说明
| 目录/文件 | 职责 | 本课程中的用途 |
|---|---|---|
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 等
}
buildFeatures.viewBinding = true 即可。
1.7 环境验证与模拟器配置
在开始编码前,务必验证开发环境是否正常工作。推荐使用Android模拟器进行调试,它支持相机模拟功能。
创建模拟器
- 点击工具栏 Device Manager 图标,选择 Create device。
- 选择 Pixel 6 或 Nexus 5X 等常用设备定义。
- 选择系统镜像:推荐 API 34 (Android 14) 的 x86_64 镜像。
- 点击 Finish,等待下载完成。
模拟器相机配置
模拟器默认使用虚拟相机(VirtualScene),支持静态图片和动态视频输入。如需测试真实相机效果,可以连接USB摄像头或使用 Android Studio 的 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 模拟器就绪 |