android - QCamera 似乎坏了

标签 android c++ qt camera

为了使用我的手机摄像头(在 Nexus 5 上),我使用以下代码:

camera = new QCamera;
camera->setViewfinder(ui->viewFinder);
ui->viewFinder->show();

ui->stackedWidget->setGeometry(0,0, 1000, 1700);
ui->viewFinder->setGeometry(0, 0, 1000, 1700);

camera->start(); // to start the viewfinder
qDebug() << camera->error() << camera->errorString();
qDebug() << camera->state() << camera->status();

来自Qt doc但它没有做任何事情。我已在头文件中添加了正确的包含内容,并在 .pro 文件中添加了QT +=多媒体multimediawidgets

输出是:

QCamera::NoError ""
QCamera::UnloadedState QCamera::UnloadedStatus

这有点奇怪,因为如果 start() 函数失败,它应该抛出一个错误:

void QCamera::start() [slot] Starts the camera.

State is changed to QCamera::ActiveState if camera is started successfully, otherwise error() signal is emitted.

While the camera state is changed to QCamera::ActiveState, starting the camera service can be asynchronous with the actual status reported with QCamera::status property.

编辑

QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
foreach (const QCameraInfo &cameraInfo, cameras) {
qDebug() << cameraInfo.deviceName();
}

输出:

"back"

"front"

因此 QT 检测到设备。

编辑2

这里有一些日志似乎包含一些错误,但由于这是我的第一个 Android 应用程序,我不完全知道发生了什么:

D/dalvikvm(21060): GC_CONCURRENT freed 172K, 2% free 17025K/17228K, paused 5ms+1ms, total 22ms
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/lib/libgnustl_shared.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/lib/libgnustl_shared.so 0x42cb2588
D/dalvikvm(21060): No JNI_OnLoad found in /data/data/org.qtproject.example.HUD/lib/libgnustl_shared.so 0x42cb2588, skipping init
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/lib/libQt5Core.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/lib/libQt5Core.so 0x42cb2588
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/lib/libQt5Gui.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/lib/libQt5Gui.so 0x42cb2588
D/dalvikvm(21060): No JNI_OnLoad found in /data/data/org.qtproject.example.HUD/lib/libQt5Gui.so 0x42cb2588, skipping init
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/lib/libQt5Network.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/lib/libQt5Network.so 0x42cb2588
I/Qt      (21060): Network start
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/lib/libQt5Multimedia.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/lib/libQt5Multimedia.so 0x42cb2588
D/dalvikvm(21060): No JNI_OnLoad found in /data/data/org.qtproject.example.HUD/lib/libQt5Multimedia.so 0x42cb2588, skipping init
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/lib/libQt5Widgets.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/lib/libQt5Widgets.so 0x42cb2588
D/dalvikvm(21060): No JNI_OnLoad found in /data/data/org.qtproject.example.HUD/lib/libQt5Widgets.so 0x42cb2588, skipping init
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/lib/libQt5OpenGL.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/lib/libQt5OpenGL.so 0x42cb2588
D/dalvikvm(21060): No JNI_OnLoad found in /data/data/org.qtproject.example.HUD/lib/libQt5OpenGL.so 0x42cb2588, skipping init
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/lib/libQt5MultimediaWidgets.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/lib/libQt5MultimediaWidgets.so 0x42cb2588
D/dalvikvm(21060): No JNI_OnLoad found in /data/data/org.qtproject.example.HUD/lib/libQt5MultimediaWidgets.so 0x42cb2588, skipping init
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/lib/libQt5Positioning.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/lib/libQt5Positioning.so 0x42cb2588
D/dalvikvm(21060): No JNI_OnLoad found in /data/data/org.qtproject.example.HUD/lib/libQt5Positioning.so 0x42cb2588, skipping init
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/qt-reserved-files/plugins/platforms/android/libqtforandroid.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/qt-reserved-files/plugins/platforms/android/libqtforandroid.so 0x42cb2588
I/Qt      (21060): qt start
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/qt-reserved-files/plugins/mediaservice/libqtmedia_android.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/qt-reserved-files/plugins/mediaservice/libqtmedia_android.so 0x42cb2588
D/dalvikvm(21060): Trying to load lib /data/data/org.qtproject.example.HUD/qt-reserved-files/plugins/position/libqtposition_android.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/data/org.qtproject.example.HUD/qt-reserved-files/plugins/position/libqtposition_android.so 0x42cb2588
I/QtPositioning(21060): Positioning start
D/dalvikvm(21060): Trying to load lib /data/app-lib/org.qtproject.example.HUD-1/libHUD.so 0x42cb2588
D/dalvikvm(21060): Added shared lib /data/app-lib/org.qtproject.example.HUD-1/libHUD.so 0x42cb2588
D/dalvikvm(21060): No JNI_OnLoad found in /data/app-lib/org.qtproject.example.HUD-1/libHUD.so 0x42cb2588, skipping init
I/Adreno-EGL(21060): <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13
D/OpenGLRenderer(21060): Enabling debug mode 0

最佳答案

我认为您问题的答案就包含在这里;

https://bugreports.qt-project.org/browse/QTBUG-38233?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

基本上 - 它不起作用。

我可以确认相机永远不会在 QT 5.3 分支下进入模式 8。 5.2.1 允许拍摄图像,但取景器不起作用。

我不确定发生了什么,或者为什么他们会停止支持此代码。

关于android - QCamera 似乎坏了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23992663/

相关文章:

java - 如何捕获AutoCompleteTextView箭头点击事件

android - 如何在 android 中将日期从 24 小时制更改为 12 小时制(上午/下午)

c++ - 将中缀表示法表达式转换为后缀表示法

c++ - 具有任意边界的快速、无偏、整数伪随机生成器

c++ - 找出在 QTableWidget 中选择了哪一列

java - 通过 Intent 将时间和日期添加到谷歌日历

android - 显示通知时华为 5.1 手机出现奇怪的允许/拒绝问题

c++ - execl - 现在没有可用于编程的内存 (OS X/XCode/C++)

c++ - Qt 服务器客户端代码

c++ - Qt 不编译 callStaticObjectMethod()