这是我第一次使用Android上的Camera dev,我测试了我在链接https://thenewcircle.com/s/post/39/using__the_camera_api找到的CameraDemo
但是我对这段代码有些问题:(
首先,这似乎有必要将此行添加到预览代码(上下文上下文)
中if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
(如果我不添加此测试,程序会崩溃)
就在这一行之前
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
因为setType()调用现在似乎已被弃用 (这就是我对Android Studio的说法)
其次,这似乎有必要将camera.setParameters()调用注释到SurfaceChanged(SurfaceHolder holder,int format,int w,int h)代码
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// Now that the size is known, set up the camera parameters and begin
// the preview.
Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(w, h);
// camera.setParameters(parameters);
camera.startPreview();
(如果取消注释此行,则会崩溃)
现在,这个示例在我的Android设备上启动时不会崩溃,我可以看到相机预览:)
但是当我旋转屏幕时它会崩溃:(
=&GT;在相机预览期间处理屏幕旋转的方法是什么? (因为camera.setParameters(参数)似乎已弃用...)
编辑:现在已部分解决:)
我做了这个小转变:
添加一个布尔变量mPreviewRunning,它在开头被初始化为false
当此变量已设置为true时添加camera.stopPreview()调用
在调用camera.startPreview()之后将此变量设置为true;
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h)
{
// Now that the size is known, set up the camera parameters and begin
// the preview
// ERROR : setParameter() is deprecated
// Camera.Parameters parameters = camera.getParameters();
// parameters.setPreviewSize(w, h);
// camera.setParameters(parameters);
if( bPreviewRunning == true)
{
bPreviewRunning = false;
camera.stopPreview();
}
camera.startPreview();
bPreviewRunning = true;
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h)
{
// Now that the size is known, set up the camera parameters and begin
// the preview
// ERROR : setParameter() is deprecated
// Camera.Parameters parameters = camera.getParameters();
// parameters.setPreviewSize(w, h);
// camera.setParameters(parameters);
if( bPreviewRunning == true)
{
bPreviewRunning = false;
camera.stopPreview();
}
camera.startPreview();
bPreviewRunning = true;
}
但是应用程序有时会崩溃,但我不明白为什么:(
(在纵向模式下预览处于错误方向)
答案 0 :(得分:0)
此处Google相机API 2的官方示例:
https://github.com/googlesamples/android-Camera2Basic
谷歌工程师开发的新图书馆,帮助您轻松支持Camera API 1和Camera API 2(请注意,尚未完全稳定,这不是官方示例):
答案 1 :(得分:-1)
以下是一些例子:
https://stackoverflow.com/a/19312182/192373
https://stackoverflow.com/a/20883662/192373
https://stackoverflow.com/a/19599599/192373
选择一个适合您需要的(改变相机方向,或保持活动固定,或其他)。