gpt4 book ai didi

android - Grafika 的 CameraCaptureActivity - 预览尺寸变化时相机预览失真

转载 作者:太空宇宙 更新时间:2023-11-03 10:18:59 25 4
gpt4 key购买 nike

我提到了 Grafika's CameraCaptureActivity在显示相机预览的同时录制视频。

我对代码所做的更改(相关的)是 -

用户点击按钮启动PreferencesActivity,选择首选相机分辨率(存储宽度高度值)并点击“返回”按钮返回到 CameraCaptureActivity

openCamera 方法中 - 我不是硬编码 widthheight 我从 SharedPreferences 中选取值

AspectFrameLayout 的 属性是这样设置的 android:background="@android:color/holo_blue_bright"。所以预览匹配 AspectFrameLayout

的大小

此问题主要发生在尺寸从较大的分辨率更改为较小的分辨率时。

在较小的屏幕上 (HTC One M7/Xperia SP) Distorted camera preview in HTC

在较大的屏幕上(Samsung Galaxy Tab S/Nexus 9)- Distorted camera preview in Samsung Tab S

我注意到发生这种情况是因为 onSurfaceChanged 被调用了两次。第一次是 widthheight 的值错误,第二次是正确的值。

但是,如果我离开 Activity 并在不做任何更改的情况下返回它,布局看起来很好。 (就像转到 PreferencesActivity 并在不更改分辨率的情况下单击“返回”。)

我在 AndroidManifest.xml 中设置了以下内容 -

<activity android:name=".activity.camera.CameraCaptureActivity"
android:launchMode="singleInstance"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.Holo.Light.NoActionBar">
</activity>

编辑:此问题仅在预览时出现。录制的视频大小正确。

编辑 2:这是我的 layout.xml

    <RelativeLayout xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cameracapturescreen_rootparent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
tools:context="com.myapp.CameraCaptureActivity">

<com.myapp.activity.camera.PreviewFrameLayout
android:id="@+id/surfaceview_framelayout"
android:layout_width="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:background="@android:color/holo_blue_bright"
android:layout_height="wrap_content">

<android.opengl.GLSurfaceView
android:id="@+id/cameraPreview_surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"/>

</com.myapp.activity.camera.PreviewFrameLayout>

我确信我传递了正确的值来设置 View 的宽度和高度,因为如果我离开 Activity 并在不进行任何更改的情况下返回 Activity ,则预览设置正确。 (比如转到另一个 Activity 并单击“返回”返回到 CameraCaptureActivity。)

最佳答案

如果问题出在预览上,我不清楚你想说什么......那么你可以在你的打开相机方法中使用以下代码

在你的 openCamera() 方法中添加这个代码,我刚刚检查过这个...希望这有帮助

    if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) {
mCamera.setDisplayOrientation(90);
} else {
mCamera.setDisplayOrientation(180);
}

将此代码添加到您的handleSetSurfaceTexture() 方法中

    if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) {
mCamera.setDisplayOrientation(90);
} else {
mCamera.setDisplayOrientation(180);
}
Camera.Parameters parms = mCamera.getParameters();

CameraUtils.choosePreviewSize(parms, mCameraPreviewWidth, mCameraPreviewHeight);

// Give the camera a hint that we're recording video. This can have a big
// impact on frame rate.
parms.setRecordingHint(true);
mCamera.setParameters(parms);

这部分代码在你的 onPause() 中

InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(((EditText)findViewById(R.id.username)).getWindowToken(), 0);

if(imm.isAcceptingText()) {
Intent intent = new Intent(this, CameraCaptureActivity.class);
startActivity(intent);
}

关于android - Grafika 的 CameraCaptureActivity - 预览尺寸变化时相机预览失真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28480323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com