相关疑难解决方法(0)

将相机预览适合大于显示器的SurfaceView

我有一个Android应用程序需要全屏一个摄像头预览,无论预设大小getSupportedPreviewSizes()没有失真.我希望这可以在高度或宽度上裁剪一些预算,但这并不关心我.我寻求这样做的原因是因为某些安卓摄像头(例如三星Galaxy SII前置摄像头)不会返回任何与显示器具有相同宽高比的预览,因此需要拉伸和剪裁.

是否可以将相机预览完全增加到大于显示尺寸的视图?通过简单地将曲面视图的布局参数设置为match_parent,可以使SurfaceView大于返回的预览像素尺寸,但这会导致某些方向的失真,并且只有在预览填充显示之前才可能.这似乎表明在显示器外部进行预览是不可能的,并且硬件(或OS)限制了这种行为.

关于这个主题还有另一个问题,但是这个问题声称不可能创建一个大于屏幕尺寸的SurfaceView,这是错误的,正如我在日志记录中发现的那样.然而,似乎情况是相机预览无法增长到庞大的SurfaceView的全尺寸.

我的尝试:

我有一个相对布局,在它内部是一个FrameLayout,在其中我创建了一个SurfaceView.整个相对布局的宽度设置在635dp以下,这是设备屏幕尺寸的两倍.FrameLayout匹配此大小,SurfaceView也是如此(稍后以编程方式添加)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/camera_activity_layout"
    android:layout_width="635dp"
    android:layout_height="match_parent" >

    <FrameLayout
        android:id="@+id/camera_preview"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

以下是获取和设置预览大小的代码.在这里,我想让相机预览展开以填充整个FrameLayout(屏幕宽度的两倍).视图完全正常显示和破坏,因此我删除与此特定问题无关的代码,因为它分散了基本问题,并且我尝试轻松简单地将视图扩展为大于显示大小的视图.

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {

    ...

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        Camera.Parameters parameters = mCamera.getParameters();
        final DisplayMetrics dm = this.getResources().getDisplayMetrics();
            //getBestPreviewSize returns the best preview size, don't worry
            //but some devices do not return one for all camera matching the aspect ratio
        cameraSize = getBestPreviewSize(parameters, dm.heightPixels, dm.widthPixels); …
Run Code Online (Sandbox Code Playgroud)

android surfaceview android-layout android-camera

23
推荐指数
1
解决办法
2万
查看次数

如何使用TextureView上的相机预览录制视频

我在一些Android 4.0设备上玩过TextureView.例如,我尝试开发一个简单的应用程序,它可以录制视频并使用TextureView进行预览.但是,就我阅读Android API文档而言,标准的MediaRecorder需要某些表面来执行视频录制,但另一方面,TextureView不再具有自己的表面,因此看起来TextureView和MediaRecorder之间存在不兼容性.

MediaRecorder.setPreviewDisplay

TextureView

有没有人知道如何使用带有TextureView的标准MediaRecorder作为相机预览来录制视频?或者有没有办法录制MediaRecorder以外的视频?

非常感谢你.

android mediarecorder android-4.0-ice-cream-sandwich

13
推荐指数
1
解决办法
4867
查看次数

同时录制视频和播放视频

我想播放视频(带声音)并同时录制前置摄像头的视频.相机的取景器应显示为屏幕右下角的小"画中画",而电影在其后面全屏播放.这可能吗?是否可以将相应的类层叠在一起?

iphone objective-c ios

1
推荐指数
1
解决办法
3945
查看次数