相关疑难解决方法(0)

如何在平方SurfaceView(如Instagram)中将相机预览大小设置为平方纵横比

我正在尝试开发自己的相机活动,但我有一个问题,我无法解决...

我想要的是与instagram相框非常相似的东西,这就是我得到的:

我的形象

什么时候我应该得到这样的东西:

Instagram图片

和...

我的第二张照片

当我应该得到这样的东西:

Instagram 2

我想我只是在使用SurfaceView和Camera预览

Camera.Parameters parameters = camera.getParameters();
camera.setDisplayOrientation(90);
Run Code Online (Sandbox Code Playgroud)

和自定义SurfaceView:

public class SquaredSurfaceView extends SurfaceView {

private int width;
private int height;

public SquaredSurfaceView(Context context) {
    super(context);
}

public SquaredSurfaceView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public SquaredSurfaceView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    width = MeasureSpec.getSize(widthMeasureSpec);
    height = width;
    setMeasuredDimension(width, width);
}

public int getViewWidth() {
    return width;
}

public int getViewHeight() …
Run Code Online (Sandbox Code Playgroud)

camera android surfaceview

46
推荐指数
2
解决办法
4万
查看次数

将相机预览适合大于显示器的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万
查看次数

如何在android中以编程方式获取相对 - 线性布局的宽度和高度?

我需要相对/线性布局的运行时尺寸.

activity_home.xml:

<RelativeLayout
    android:id="@+id/rlParent"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

HomeActivity.java:

private int width, height;

RelativeLayout rlParent = (RelativeLayout) findViewById(R.id.rlParent);

w = rlParent.getWidth();
h = rlParent.getHeight();

Log.i("Width-Height", width+"-"+height);
Run Code Online (Sandbox Code Playgroud)

请分享你的想法.

android android-linearlayout android-relativelayout

12
推荐指数
3
解决办法
2万
查看次数

使用自定义相机,图像质量很差

我正在使用自定义相机并且工作正常,但问题是图像以非常低(差)质量保存.为了克服它,我已经尝试了所有的建议和实现.喜欢 ,

parameters.setJpegQuality(100);
parameters.setPictureFormat(ImageFormat.JPEG);
Run Code Online (Sandbox Code Playgroud)

这不起作用.之后我用过了

List<Size> sizes = cameraParams.getSupportedPictureSizes();
Camera.Size size = sizes.get(0);
for(int i=0;i<sizes.size();i++)
{
 if(sizes.get(i).width > size.width)
 size = sizes.get(i);
}
cameraParams.setPictureSize(mPictureSize.width, mPictureSize.height);
Run Code Online (Sandbox Code Playgroud)

这也行不通.它的质量仍然很差.

注意:相机预览显示质量正常,但问题是将捕获的图像保存到SD卡文件夹.

高级帮助将不胜感激!

camera android

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

Camera2 全屏预览和图像捕捉

我正在使用Camera2的示例代码,我想知道如何以全屏方式进行预览和捕获的图像?这个SO question 似乎在视频模式下解决了它,但我找不到任何图像捕获的解决方案。样本片段底部有一个蓝色区域,也有状态 bas。我想隐藏这两个并使用整个屏幕来显示预览,并以全屏尺寸捕获图像。

camera android

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