Quay video

Lưu ý: Trang này đề cập đến lớp Camera (không dùng nữa). Bạn nên dùng CameraX hoặc Camera2 (trong một số trường hợp sử dụng cụ thể). Cả CameraX và Camera2 đều hỗ trợ Android 5.0 (API cấp 21) trở lên.

Bài học này giải thích cách quay video bằng các ứng dụng máy ảnh hiện có.

Ứng dụng của bạn có việc cần làm và việc tích hợp video chỉ là một phần nhỏ của việc đó. Bạn muốn quay video mà không tốn nhiều công sức và không phải đổi mới máy quay video. Thật may là hầu hết thiết bị chạy Android đều có ứng dụng máy ảnh kết hợp chức năng quay video. Trong bài học này, bạn sẽ tìm hiểu cách dùng ứng dụng máy ảnh để quay video.

Hãy tham khảo các tài nguyên liên quan sau:

Yêu cầu tính năng máy ảnh

Để quảng cáo rằng ứng dụng này phụ thuộc vào việc có máy ảnh, hãy đặt thẻ <uses-feature> vào tệp kê khai:

<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>

Nếu ứng dụng của bạn dùng máy ảnh nhưng không cần phải có máy ảnh mới hoạt động được, hãy đặt android:required thành false. Khi làm như vậy, Google Play sẽ cho phép các thiết bị không có máy ảnh tải ứng dụng của bạn xuống. Sau đó, bạn có trách nhiệm kiểm tra khả năng hoạt động của máy ảnh trong thời gian chạy bằng cách gọi hasSystemFeature(PackageManager.FEATURE_CAMERA). Nếu máy ảnh không sử dụng được, bạn nên tắt các tính năng của máy ảnh.

Xem video

Ứng dụng Máy ảnh trên Android trả về video trong Intent được phân phối cho onActivityResult() dưới dạng Uri trỏ đến vị trí video trong bộ nhớ. Mã sau đây truy xuất và hiển thị video này trong VideoView.

Kotlin

override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent) {
    if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
        val videoUri: Uri = intent.data
        videoView.setVideoURI(videoUri)
    }
}

Java

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
        Uri videoUri = intent.getData();
        videoView.setVideoURI(videoUri);
    }
}