在 Android 中,默认的摄像头 API 可以通过 MediaRecorder 类和 Surface 接口来捕获和录制视频。在录制视频时,需要使用 MediaRecorder 类的 setVideoSource() 方法来设置视频源,并将其与 Surface 接口进行绑定。在 SurfaceHolder.Callback 的回调中,可以获取到 Surface 对象,然后使用 MediaCodec 类将视频帧输出到文件中。
要获取视频路径,可以使用 MediaRecorder 类的 getPath() 方法,它会返回一个文件路径,该路径指向视频文件。
下面是一个简单的示例代码,演示如何使用 Android 中的默认摄像头捕获视频:
String path = MediaRecorder.getPath();
这行代码会返回一个文件路径,该路径指向视频文件。
需要注意的是,使用默认的摄像头 API 捕获视频需要用户授权,因此需要在 AndroidManifest.xml 文件中添加以下权限:
<uses-permission android:name="android.permission.RECORD_VIDEO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
此外,在 Android 10(API 级别 29)及以后的版本中,需要请求访问摄像头和麦克风,可以通过以下代码来请求访问权限:
private void requestCameraPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
// Camera permission granted
startRecording();
} else {
// Request camera permission
requestPermissions(new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION);
}
}
以上代码演示了如何请求访问摄像头的权限。如果用户的 Android 设备版本低于 Android 10,则可以通过以下代码来请求访问麦克风和摄像头的权限:
private void requestCameraAndMicPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
&& checkSelfPermission(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED) {
// Camera and Mic permission granted
startRecording();
} else {
// Request camera and mic permission
requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO}, REQUEST_CAMERA_MIC_PERMISSION);
}
}
以上代码演示了如何请求访问麦克风和摄像头的权限。如果用户的 Android 设备版本低于 Android 10,则可以通过以下代码来请求访问麦克风和摄像头的权限:
private void requestCameraAndMicPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
&& checkSelfPermission(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED) {
// Camera and Mic permission granted
startRecording();
} else {
// Request camera and mic permission
requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO}, REQUEST_CAMERA_MIC_PERMISSION);
}
}
以上代码演示了如何请求访问麦克风和摄像头的权限。如果用户的 Android 设备版本低于 Android 10,则可以通过以下代码来请求访问麦克风和摄像头的权限:
private void requestCameraAndMicPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
&& checkSelfPermission(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED) {
// Camera and Mic permission granted
startRecording();
} else {
// Request camera and mic permission
requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO}, REQUEST_CAMERA_MIC_PERMISSION);
}
}
以上代码演示了如何请求访问麦克风和摄像头的权限。如果用户的 Android 设备版本低于 Android 10,则可以通过以下代码来请求访问麦克风和摄像头的权限:
private void requestCameraAndMicPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
&& checkSelfPermission(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED) {
// Camera
领取专属 10元无门槛券
手把手带您无忧上云