我正在开发一个演示,我必须检查设备是否有前置摄像头,如果设备有前置摄像头,那么我必须打开它来捕获图像.
我搜索了很多,但没有找到任何解决方案.请给我一个解决方案帮助我.
提前致谢.
我正在做android视频摄像头应用程序.它应该具有使用后置和前置摄像头进行录制的功能.我完成了后置摄像头,一切都很好.但是当我用前置摄像头录制时,视频会颠倒过来.我必须播放我的应用程序本身录制的视频.我正在使用VideoView,如何设置方向或使其正确播放?在默认媒体播放器中播放的视频也在颠倒播放.尝试将视频发送到iPhone并进行检查,但仍然会颠倒.我有setOrientationHint到MediaRecorder但没有解决方案.
所有我的代码类似于agargenta的视频捕获演示,我已经完成了自定义.
问题似乎很奇怪,我很震惊.
this.mediaRecorder = new MediaRecorder();
this.mediaRecorder.setCamera(this.mCamera);
this.mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
this.mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
if (Build.VERSION.SDK_INT <= 10) {
CamcorderProfile camcorderProfile = CamcorderProfile
.get(CamcorderProfile.QUALITY_HIGH);
camcorderProfile.videoFrameWidth = 320;
camcorderProfile.videoFrameHeight = 480;
// camcorderProfile.videoFrameRate = 15;
camcorderProfile.videoCodec = MediaRecorder.VideoEncoder.H264;
// camcorderProfile.audioCodec = MediaRecorder.AudioEncoder.DEFAULT;
camcorderProfile.fileFormat = MediaRecorder.OutputFormat.MPEG_4;
this.mediaRecorder.setProfile(camcorderProfile);
mediaRecorder.setOrientationHint(90);
} else {
if (tgbSwitchCamera.isChecked()) {
mediaRecorder
.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
// mediaRecorder.setVideoSize(320, 480);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
CameraInfo cameraInfo = new CameraInfo();
Camera.getCameraInfo(CameraInfo.CAMERA_FACING_FRONT, cameraInfo);
rotation = (cameraInfo.orientation - 180 + 360) % 360;
mediaRecorder.setOrientationHint(rotation);
} else {
CamcorderProfile camcorderProfile = …Run Code Online (Sandbox Code Playgroud) android android-camera android-orientation android-videoview
我想在尝试打开qr代码阅读器之前检查设备是否有任何相机.
我有以下代码:
public boolean checkDeviceCompatibility() {
PackageManager pm = context.getPackageManager();
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) {
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
return true;
} else {
// use front camera
Toast.makeText(
context,
"This device does not have a back camera so it has automatically reverted to the front camera",
Toast.LENGTH_SHORT).show();
return true;
}
} else {
util.displayErrorDialog(
context,
"This device does not have any cameras and therefore cannot make use of the QR Code feature.");
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但现在,如果我在我的Galaxy S3上使用两个摄像头以调试模式运行此代码.第一个if语句返回false.
为什么会这样?
camera android android-hardware android-package-managers android-camera
如何在捕获图像后删除确认显示("保存"和"丢弃"按钮显示)?

我想在不改变应用程序功能的情况下删除第二步:在startActivityForResult函数转到previewCapturedImage()函数之后.
这是我的代码:
public class MainActivity extends Activity {
private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
public static final int MEDIA_TYPE_IMAGE = 1;
private static final String IMAGE_DIRECTORY_NAME = "OpenCV Demo";
private Uri fileUri;
private ImageView imgPreview;
private Button btnCapturePicture;
private FrameLayout frameLayout;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_8, this, mOpenCVCallBack))
{
Log.e("TEST", "Cannot connect to OpenCV Manager");
}
setContentView(R.layout.activity_main);
}
private void captureImage() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); …Run Code Online (Sandbox Code Playgroud) 我正在创建一个应用程序,我在surfaceview中使用相机.问题是在相机中拍摄照片后,它会继续显示拍摄的照片无法拍摄下一张照片,但拍摄的图像会存储在文件路径中.我需要的是在surfaceview中捕获图像后,它应该自动重新加载相机以拍摄下一个.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera);
preview = (SurfaceView) findViewById(R.id.preview);
previewHolder = preview.getHolder();
previewHolder.addCallback(surfaceCallback);
previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
button = (Button)findViewById(R.id.capture);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
camera.takePicture(null, null, photoCallback);
}
});
}
SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() {
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
try {
camera.setPreviewDisplay(previewHolder);
camera.setDisplayOrientation(90);
camera.startPreview();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void …Run Code Online (Sandbox Code Playgroud) 我正在尝试打开相机并使用显示SurfaceView。这使活动的加载延迟了很长时间。所以我想知道打开相机的最佳做法是什么。
在旧相机api我有Camera.Parameters的setFocusArea,我可以指定相机焦点的矩形,但在新的Camera2 api我只能指定焦距.任何人都知道如何指定相机焦点的矩形?
期望的效果是实现对触摸的关注.我在Stack Overflow中找到了很多答案来实现对新相机api中触摸的关注,但没有人让我指定一个Rect.
我在我的android应用程序中使用https://github.com/dlazaro66/QRCodeReaderView(QR码扫描程序)
我的主要权限如下:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
Run Code Online (Sandbox Code Playgroud)
在Gradle中我有以下代码:
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.gurkhatech.schoolmanagement"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
Run Code Online (Sandbox Code Playgroud)
我已经用Java实现了代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qr);
mQrCodeReaderView = (QRCodeReaderView)findViewById(R.id.qrdecoderview);
mQrCodeReaderView.setOnQRCodeReadListener(this);
}
@Override
public void onQRCodeRead(String text, PointF[] points) {
Toast.makeText(getApplicationContext(),text,Toast.LENGTH_LONG).show();
}
@Override
public void cameraNotFound() {
}
@Override
public void QRCodeNotFoundOnCamImage() {
}
@Override
protected void onResume() {
super.onResume();
mQrCodeReaderView.getCameraManager().startPreview();
}
@Override
protected void onPause() {
super.onPause(); …Run Code Online (Sandbox Code Playgroud) 我在macbook上使用Android Studio来创建简单的相机应用程序,遵循官方的Android文档.但是,当我试图打电话时,camera.setPreviewDisplay(SurfaceHolder)我收到以下错误:
错误:(29,16)错误:找不到符号方法setPreviewDisplay(SurfaceHolder)
我的CameraPreview类如下:
package com.opencv.camerapreview;
import android.content.Context;
import android.graphics.Camera;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback{
private SurfaceHolder surfaceHolder;
private Camera mCamera;
public CameraPreview(Context context, Camera camera) {
super(context);
mCamera=camera;
this.surfaceHolder= getHolder();
this.surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera.setPreviewDisplay(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
}
Run Code Online (Sandbox Code Playgroud)
看起来这是Android Studio中的一些链接问题.任何人都可以阐明为什么会发生这种情况并解决问题.谢谢
我目前正在使用android-Camera2Basic,这个样本设计用后置摄像头拍照,它工作正常,但当我改变这一行:
if (facing != null && facing != CameraCharacteristics.LENS_FACING_FRONT)
Run Code Online (Sandbox Code Playgroud)
预览显示了预期的相机,但单击图片按钮时不拍照.
为什么发生这种情况我需要改变别的东西?