相机2最大1440x1080

2024-02-18

我正在尝试使用横向(1920x1080)显示正常的全高清预览Camera2,但相机返回 1440x1080 作为最高分辨率。

使用旧相机(android.hardware.camera)同一设备没有这样的问题。我究竟做错了什么?

CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
cameraId = manager.getCameraIdList()[0];
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
assert map != null;
imageDimension = map.getOutputSizes(SurfaceTexture.class)[0];

for (Size size : map.getOutputSizes(SurfaceTexture.class)) {
    Log.i(TAG, "imageDimension " + size);
}

Output:

imageDimension 1440x1080
imageDimension 1280x960
imageDimension 1280x720
imageDimension 864x480
imageDimension 640x640
imageDimension 832x486
imageDimension 800x480
imageDimension 720x480
imageDimension 768x432
imageDimension 640x480

另外,为了在横向中正确显示预览,我们似乎需要很多令人头疼的代码,例如:

private void configureTransform(int viewWidth, int viewHeight) {
        Activity activity = getActivity();
        if (null == mTextureView || null == mPreviewSize || null == activity) {
            return;
        }
        int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
        Matrix matrix = new Matrix();
        RectF viewRect = new RectF(0, 0, viewWidth, viewHeight);
        RectF bufferRect = new RectF(0, 0, mPreviewSize.getHeight(), mPreviewSize.getWidth());
        float centerX = viewRect.centerX();
        float centerY = viewRect.centerY();
        if (Surface.ROTATION_90 == rotation || Surface.ROTATION_270 == rotation) {
            bufferRect.offset(centerX - bufferRect.centerX(), centerY - bufferRect.centerY());
            matrix.setRectToRect(viewRect, bufferRect, Matrix.ScaleToFit.FILL);
            float scale = Math.max(
                    (float) viewHeight / mPreviewSize.getHeight(),
                    (float) viewWidth / mPreviewSize.getWidth());
            matrix.postScale(scale, scale, centerX, centerY);
            matrix.postRotate(90 * (rotation - 2), centerX, centerY);
        } else if (Surface.ROTATION_180 == rotation) {
            matrix.postRotate(180, centerX, centerY);
        }
        mTextureView.setTransform(matrix);
    }

来自官方样本https://github.com/googlesamples/android-Camera2Basic/blob/master/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java#L740 https://github.com/googlesamples/android-Camera2Basic/blob/master/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java#L740

Camera2 不是应该比传统相机更容易吗?我不知道...

虽然我看到一件好事:我们可以设置许多表面目标,但我们无法使用传统相机setPreviewDisplay and setPreviewTexture在一起,但 Camera2 允许多个输出

UPDATE

OMG!

接下来的信息让我震惊:

附注我在小米设备上测试过

Android Camera2 输出尺寸 https://stackoverflow.com/questions/31362202/android-camera2-output-sizes

https://github.com/googlesamples/android-Camera2Basic/issues/113 https://github.com/googlesamples/android-Camera2Basic/issues/113

https://github.com/googlesamples/android-Camera2Basic/issues/123 https://github.com/googlesamples/android-Camera2Basic/issues/123


TL;DR如果你有CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY基本上你的手机制造商不支持Camera API2。

对于那些像我一样最终来到这里的人,您可以在相关中找到解释question https://stackoverflow.com/questions/31362202/android-camera2-output-sizes/55442751#55442751和这个github问题 https://github.com/googlesamples/android-Camera2Basic/issues/123 .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相机2最大1440x1080 的相关文章

  • 在 Android 上将视频设置为壁纸

    我想知道如何将视频设置为壁纸 否则不可能 我可以将图像设置为壁纸 并且可以构建动态壁纸 但无法将视频设置为壁纸 所以有人知道我该怎么做吗 提前致谢 我认为唯一可以做到的方法是将其合并到 动态壁纸 中 缺点是正如其他人提到的那样 这会严重影响
  • 从 admob 独立 SDK 切换到 Google Play 服务 SDK 时,apk 大小会膨胀

    使用 Admob SDK 我的 apk 大小为 230Kb 当用 google play services SDK 替换 Admob SDK 时 它是 1 5MB 膨胀了 6 倍以上 我想完整的 Google Play 服务客户端 SDK
  • 无法禁用 Firestore 中的离线数据

    从我的数据中删除数据后Firestore Database 这需要我的Android app一段时间后才意识到数据已被删除 我认为这是由于自动数据缓存而发生的 我的应用程序与离线使用无关 我想禁用此功能 我已将其添加到我的自定义中Appli
  • Android异步服务调用策略

    这是场景 客户端对服务进行远程调用 返回 void 并提供 回调对象 服务在后台线程上执行一些长时间运行的逻辑 然后使用回调对象来触发以太成功或失败 因为这些操作视觉元素 执行 Activity runOnUiThread 块 该场景运行良
  • 垂直翻转 Android Canvas

    有没有一种简单的方法可以在 Android 中翻转画布 我似乎找不到任何可以让我垂直翻转它的东西 这样 y 轴上的零就是手机屏幕的底部而不是顶部 如果解决方案不是特别快也没关系 因为我没有对画布进行任何计算密集的操作 提前致谢 Try ca
  • Android 应用程序主活动出现 ClassNotFoundException

    大多数设备都可以运行我的应用程序 但我收到此错误报告 java lang RuntimeException Unable to instantiate activity ComponentInfo com company app com c
  • Android:NotificationCompat.MediaStyle 操作按钮不执行任何操作

    我有一个简单的 Android 应用程序 其中包含一个Activity and a Service源自于MediaBrowserServiceCompat 我已成功将其设置为通过使用播放我的主要活动中的音频MediaBrowserCompa
  • Android:让用户从图库中选择图像或视频

    是否可以以这样的方式启动图库 以便同时显示图片和视频 Thanks 从图库中选择音频文件 Use MediaStore Audio Media EXTERNAL CONTENT URI Intent intent new Intent In
  • Android物理引擎[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在研究了 3D 游戏编程之后 很快就明白了为什么物理引擎非常有用 Android 支持哪些物理引擎并且可以在 Android 上使用 关于
  • 按钮上方带有文本的单选按钮

    我是 Android 新手 我需要在我的活动中添加单选按钮 但我需要将文本放在项目符号按钮的顶部 请提供任何帮助 我发现了以下内容 尽管我不明白 drawable in 选择器和 style Tab 样式是什么 顶部带有文本的单选按钮 ht
  • 不同风格的模块文件

    我正在尝试在同一个应用程序中实现播放服务和华为服务 但希望能够按风格配置使用哪一个 每种风格都使用自己的 applicationIdSuffix 因此 对于每种不同的风格 华为插件都会失败 我无法编译 我的应用程序模块包含agconnect
  • 如何将您的终端与 Android 模拟器连接

    我尝试导航到 android 工具文件夹并输入 adb shell 命令 但它似乎不起作用 我的终端似乎只能识别命令的 adb 部分 并给我一条错误消息 我究竟做错了什么 通过键入列出所有连接的设备adb devices 检查是否列出了任何
  • Android TabLayout:均匀分布

    我正在查看 Google IO 中使用的 Google 类 称为 SlidingTabLayout 在该类中 有一个名为 setDistributeEvenly 的方法 它允许所有这些选项卡在屏幕上均匀分布 每个选项卡具有相同的大小 中心对
  • Android/三星 Galaxy S 模拟器

    有没有办法在三星银河模拟器或类似的东西上尝试我的项目 我的项目在 HTC Legend 上运行 但在该设备上崩溃了 我如何在 android eclipse 上设置三星 Galaxy s 我设置了 W800 854 2 2 AVD 但它可以
  • 无法在 Android 中使用自定义数组适配器进行搜索?

    我无法从以下位置搜索listview 我尝试了各种方法 但它对我不起作用 没有错误 我有其他方式进行搜索 但我想让这种方式成为可能 这是代码 public class MainActivity extends Activity implem
  • 无法在 Android Studio 中运行项目

    当我尝试在 Android Studio 中运行我的项目时 我收到以下错误消息 Execution failed for task CricHQ dexDebug gt com android ide common internal Log
  • 拥有可重用对话框的最佳方法是什么?

    在 Android 中创建可重用对话框的最佳方法是什么 阅读通过对话框开发指南 http developer android com guide topics ui dialogs html 我知道我可以使用AlertDialog Buil
  • Android RxJava 2 JUnit 测试 - android.os.Looper 中的 getMainLooper 未模拟 RuntimeException

    我在尝试为正在使用的演示者运行 JUnit 测试时遇到 RuntimeExceptionobserveOn AndroidSchedulers mainThread 由于它们是纯 JUnit 测试而不是 Android 仪器测试 因此它们无
  • 如何为部分 Android 活动创建通用代码?

    我的申请中有 14 项活动 这 9 个活动中包含自定义标题栏和选项卡窗格 所以在这里我需要在一个地方编写这个通用代码 而不是在每个包含自定义标题栏和选项卡窗格代码的活动中编写冗余代码 即布局及其活动特定代码 有哪些可能的方法可以做到这一点
  • 找不到与给定名称“@style/Theme.AppCompat.Light”匹配的资源

    我已经研究这个问题几个小时了 从 github 下载存储库后 任何 xml 文件中的唯一错误是 No resource found that matches the given name style Theme AppCompat Ligh

随机推荐

  • php imagick,如何使区域透明

    我想使 Imagick 对象内的一个区域透明 具有特定的宽度 高度和顶部位置 例如 我需要一个从第 15 像素到顶部 30 像素 x 30 像素的透明区域 但我找不到方法来实现 canvas1 new Imagick canvas1 gt
  • 如何检查内核中SMP是否启用或禁用?

    我想知道如何检查我正在运行的机器 内核是否配置为 SMP 当然 我可以查看内核 config文件并可以搜索它 但是 问题是假设我没有源代码 我将如何检查 SMP 配置 有没有proc文件来检查吗 下面说我没有多核 cat proc cpui
  • MPI_Send 和 MPI_Recv 的行为

    为什么要写这几行代码 if my rank 0 sprintf msg Hello from d of d my rank comm sz if my rank 2 sleep 2 sprintf msg Hello from d of d
  • 如何使用 Win2D 模拟 DeviceLost 事件?

    我有一个CanvasControl在 UWP 应用程序中 我注意到当我将 Surface 单独放置一段时间并且它会自动进入睡眠状态时 CanvasControl恢复后不再起作用 之前绘制的位图现在是空白的 我尝试在 Visual Studi
  • 失败后自动重新部署

    我使用 VSTS 在每次提交到特定分支后自动发布我的应用程序 任务基本上是 重新创建数据库 如果第一个没问题 gt 部署 API 和 Web 如果第二个没问题 gt 部署并重新启动一些 Windows 服务 在第二步中 有时会由于某些连接或
  • Couchbase 文档 ID 生成

    我有一个与 couchbase 6 0 集成的 Springboot 应用程序 我读过 如果一个键用 Id 注释 那么它将保存为文档 ID 并且不会成为 json 的一部分 然后我在键上一起使用了 Id和 Field 但该字段仍然没有出现在
  • 如何在 Jupyter / IPython 中覆盖之前的打印行

    我完全清楚print Blah end r 但这在 Jupyter IPython 笔记本中不起作用 因为它在终端中通常不打印任何内容 或者如果操作非常快 则会触发异常 难道这就是不可能吗 谢谢 None
  • 单独读取数据 fscanf

    我正在尝试从文件中读取数字 该文件具有以下格式 2 4 5 7 3 2 4 7 我尝试使用fscanf收集直到换行符的所有数字并将数字存储在数组中 与第二行相同 但直接从第二行开始不会再次开始并将其存储在另一个数组中 是否可以使用以下方法来
  • 如何修复错误:此类与键 tableView 的键值编码不兼容。 [复制]

    这个问题在这里已经有答案了 我做了一个应用程序Table View and Segmented Control 这是我第一次 我正在使用一些代码和一些教程 但它不起作用 当我运行我的应用程序时 它崩溃了 并在日志中显示此错误 MyAppli
  • 在 shell/bash 中的两个命令之间连接输入和输出

    我有两个 UNIX 程序 A 和 B 它们从 stdin stdout 读取和写入 我的第一个问题是如何将 A 的 stdout 连接到 B 的 stdinandB 的标准输出到 A 的标准输入 即 类似 A B而是双向管道 我怀疑我可以通
  • 为什么我的库无法在 CocoaPods 网站上扩展?

    我正在尝试通过 CocoaPods 网站访问我的图书馆信息 但无法访问 所有其他库似乎都能够扩展 我的是 MKWeatherUndergroundKit 这是我的 podspec Pod Spec new do s s name MKWea
  • Ember.js 中的路由采用什么样的单元测试解决方案? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在寻找在 Ember js 应用程序中对路由进行单元测试的最佳解决方案 我找到了两种解决方案 我希望你告诉我什么是最适合你的 这两个实现可以
  • 正则表达式匹配字符串的可选结尾

    鉴于以下情况 John Smith John Smith 123 John Smith 123 456 我想捕捉 John Smith John Smith 123 John Smith 123 456 什么样的 Java 正则表达式可以让
  • cURL 中的主机名和路径分开

    使用 cURL 时有没有办法将主机名和路径分开 我想向服务器本身发出请求 而不是向特定资源发出请求 如下 IETF 所述 Request URI 的四个选项取决于请求的性质 要求 星号 表示该请求不适用于 特定资源 但仅限于服务器本身 并且
  • QSocketNotifier:只能与以 QThread 启动的线程一起使用

    我仅使用一个非常基本的应用程序并且没有套接字或任何奇特的东西就收到以下错误 QSocketNotifier 只能与以 QThread 启动的线程一起使用 Machine Fedora 32 工作站版 Python 3 8 PyQt5 Fed
  • v4.app.Fragment 中 getLoaderManger() 和 getActivity().getSupportLoaderManager() 之间的区别

    getLoaderManager from android support v4 app Fragment and getSupportLoaderManager from android support v4 app FragmentAc
  • 如何将 XCTAssertNil 与可选结构一起使用?

    更新 2016 年 3 月 23 日我刚刚测试了下面的原始示例代码 它在 XCode 7 3 中编译得很好 看起来 XCTAssertNil 已更新以获取类型表达式 throws gt Any 因此 可能不再需要这个问题和答案 除了旧版本编
  • Google Charts API 使用 $(document).ready 方法显示空白屏幕

    我有几个函数可以使用 Google Charts API 实例化各种图表 当我在没有 jQuery 的情况下调用它们时 document ready方法 一切正常 但用这种方法 我看到的是空白屏幕 Why function drawColu
  • 遇到:json.decoder.JSONDecodeError:期望值:第1行第1列(字符0)

    我拿到json decoder JSONDecodeError Expecting value line 1 column 1 char 0 当我尝试访问我创建的 json 文件中的值时 我运行了下面的运行文件 似乎存在这个解码器问题 但是
  • 相机2最大1440x1080

    我正在尝试使用横向 1920x1080 显示正常的全高清预览Camera2 但相机返回 1440x1080 作为最高分辨率 使用旧相机 android hardware camera 同一设备没有这样的问题 我究竟做错了什么 CameraM