gpt4 book ai didi

Android:在库项目中访问 c​​amera.startPreview()

转载 作者:行者123 更新时间:2023-11-29 01:24:11 37 4
gpt4 key购买 nike

我是 Android 的新手,但必须在项目上做一些相当复杂的编程。我们想为 Unity 项目编写一个 Android 插件,因为我们需要测量用户的心率。代码本身已经编写完成,并且可以在应用程序的上下文中正常运行。我们现在必须在图书馆项目的上下文中重写它。

我已经想出了如何在没有 GUI 元素的情况下访问 getSystemService()(我没有 GUI 元素,因为它是一个库而不是一个应用程序)。

现在的问题是,当我调用 camera.startPreview() 时,没有任何反应。我尝试执行以下操作:

public HeartRateMeasurement(Context c) {
context = c;

SurfaceView surfaceView = new SurfaceView(c);
SurfaceHolder holder = surfaceView.getHolder();
holder.addCallback(this);
surfaceCreated(holder);

}

在 surfaceCreated 内部我设置了一些参数(比如闪光模式“手电筒”)然后调用

camera.setPreviewDisplay(holder);
camera = open();

以及何时开始测量心率(发生在单击按钮时)

camera.startPreview();

这一切(除了我自己添加的构造函数之外)在应用程序内部完成时就像魅力一样工作,但不是在库中 - 没有抛出异常,但闪光灯不会打开。在调试信息中,他告诉我“D/Camera:app passed NULL surface”,这并不奇怪,因为没有布局/表面。

我的 list 看起来像这样:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tudarmstadt.heartrateplugin">
<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"></application>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera.flash" />
<uses-feature android:name="android.hardware.Sensor" />
</manifest>

有什么方法可以使 startPreview() 正常工作?

最佳答案

将表面附加到主布局。

rootlayout.addView(surfaceView)

最新的 API 防止程序员在不显示数据的情况下获取数据。

编辑为了获得根布局,你必须使用这个:

mRootWindow = getWindow();
mDecorView = mRootWindow.getDecorView();
mRootView = mDecorView.findViewById(android.R.id.content);

关于Android:在库项目中访问 c​​amera.startPreview(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35015595/

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