Приложение Meego 1.2 Harmattan и QCamera
Есть ли какой-либо способ работы с камерой с классом QCamera в Nokia N9 (Meego 1.2 Harmattan) или мне следует использовать другой?
Вот моя проблема: простое приложение, которое отлично работает на Nokia C6-01 (Symbian Anna), не делает ничего полезного на N9.
Вот фрагменты кода:
testmobile.pro
<...>
CONFIG += mobility
MOBILITY += multimedia
LIBS += -lQtMultimediaKit
<...>
mainwindow.h
class MainWindow : public QWidget
{
Q_OBJECT
<...>
private:
QCamera* camera_;
QGraphicsView *view;
QGraphicsVideoItem *videoItem;
QGraphicsScene *scene;
<...>
}
mainwindow.cpp
MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
<...>
camera_ = new QCamera;
view = new QGraphicsView(this);
scene = new QGraphicsScene(view);
videoItem = new QGraphicsVideoItem;
view->setScene(scene);
scene->addItem(videoItem);
QVBoxLayout *lay = new QVBoxLayout(this);
lay->addWidget(view);
this->setLayout(lay);
view->show();
camera_->setViewfinder(videoItem);
camera_->start();
}
<...>
Итак, после того, как объект MainWindow создан и показан, мы увидим простой видоискатель на Nokia C6-01 и черный экран на Nokia N9.
Есть идеи?
1 ответ
Я нашел решение! Это была проблема безопасности. Как я обнаружил - у Meego есть аналог "возможностей" Symbian. Это называется токены безопасности AEGIS. Итак, чтобы запросить разрешение на работу с камерой (или любой другой), вам нужно добавить файл your_application_name.agis в папку "qtc_packaging/debian_harmattan" вашего проекта. В моем случае этот файл состоял из:
<aegis>
<request>
<credential name="GRP::video"/>
<credential name="GRP::pulse-access"/>
<for path="/opt/testmobile/bin/testmobile"/>
</request>
</aegis>
Таким образом, разрешения определяются в свойстве "name" тега "credential", а тег "for path" определяет пакет, с которым эти разрешения будут выполняться.
Более подробную информацию можно найти здесь