C
QActivityView 类
一个对 ActivityView Java 类的 C++ 封装。 更多...
头文件 | #include <QActivityView> |
qmake | QT += androidactivityview |
自 | Qt 6.3 |
继承 | QObject |
公共类型
enum class | Status { NotInitialized, Ready, Starting, Started, RemovedExternally } |
公共函数
QActivityView(QObject *parent = nullptr) | |
virtual | ~QActivityView() |
QString | activityClassName() const |
QString | activityPackageName() const |
float | cornerRadius() const |
(since QtAndroidAutomotive 6.7) const QMatrix4x4 & | currentFrameTextureTransformation() const |
(since QtAndroidAutomotive 6.7) qint64 | currentFrameTimestamp() const |
(since QtAndroidAutomotive 6.7) void | forwardInputEvent(const QJniObject &inputEvent) |
QRect | geometry() const |
void | initialize() |
(since QtAndroidAutomotive 6.7) bool | isNewFrameAvailable() const |
bool | isRestoreOnAppResumeEnabled() const |
bool | isVisible() const |
void | restore() |
(since QtAndroidAutomotive 6.7) void | sendKeyClick(int keyCode) |
(since QtAndroidAutomotive 6.7) void | sendTouchEvent(const QTouchEvent &touchEvent, const QTransform &transform = {}) |
void | setActivityName(const QString &packageName, const QString &className = QString()) |
void | setGeometry(const QRect &geometry) |
void | setRestoreOnAppResume(bool restore) |
void | setVisible(bool visible) |
(since QtAndroidAutomotive 6.7) std::unique_ptr<QRhiTexture> | startRendering(QRhi *rhi, int textureWidth, int textureHeight) |
QActivityView::Status | status() const |
(since QtAndroidAutomotive 6.7) void | stopRendering() |
(since QtAndroidAutomotive 6.7) void | updateCurrentFrame() |
信号
void | statusChanged(QActivityView::Status 状态) |
详细描述
QActivityView 允许嵌入和处理 Android 应用和活动。
活动视图已知问题和局限性
由于 ActivityView 需要特殊权限并且依赖于私有 Android API,因此使用它的应用程序必须使用平台密钥签名。
Android 10
由提供的 packageName
和 className
解析的活动必须在配置中设置 resizeableActivity 属性为 true
才能作为嵌入的活动正确启动。另外,如果活动不属于该应用程序的所有者,它必须允许嵌入。此规则也适用于从嵌入的活动内部启动的活动。否则,新活动可能无法正确运行,例如可能全屏启动。
成员类型文档
枚举类型 QActivityView::状态
指示管理活动的状态。
常量 | 值 | 描述 |
---|---|---|
QActivityView::Status::NotInitialized | 0 | 组件实例尚未初始化。初始化正在进行中,必须在任何活动运行之前完成。此过程涉及分配适当的资源,例如创建一个 Surface。初始化仅对每个 ActivityView 组件实例进行一次。 |
QActivityView::Status::Ready | 1 | 组件实例已初始化,但尚未设置有效的包名/类名。设置有效包名/类名后,活动将立即启动。 |
QActivityView::Status::Starting | 2 | 当前正在启动由包名/类名定义的活动。 |
QActivityView::Status::Started | 3 | 活动已启动。 |
QActivityView::Status::RemovedExternally (自 Qt 6.4) | 4 | 活动已从本 ActivityView 中移除。这发生在应用程序处于活动状态且活动在其他地方运行或已关闭的情况下。第二种情况是当应用程序不处于活动状态(例如已经挂起),restoreOnAppResume 设置为 false ,并且活动在其他地方运行或关闭。 |
另请参阅 status() 和 statusChanged()。
成员函数文档
[显式]
QActivityView::QActivityView(QObject *parent = nullptr)
为 ActivityView Java 类创建一个包装器,并将 parent 设置为父对象。
[虚函数 noexcept]
QActivityView::~QActivityView()
销毁包装器对象,释放 ActivityView 类的底层 Java 对象。
QString QActivityView::activityClassName() const
返回活动的类名。
另请参阅 setActivityName。
QString QActivityView::activityPackageName() const
返回活动的包名。
另请参阅 setActivityName。
float QActivityView::cornerRadius() const
返回管理活动的圆角半径,单位为像素。
[自 QtAndroidAutomotive 6.7]
const QMatrix4x4 &QActivityView::currentFrameTextureTransformation() const
返回在渲染期间应用于纹理的变换矩阵。
此功能从 QtAndroidAutomotive 6.7 开始引入。
另请参阅 updateCurrentFrame。
[自 QtAndroidAutomotive 6.7]
qint64 QActivityView::currentFrameTimestamp() const
返回当前帧的时间戳。
此功能从 QtAndroidAutomotive 6.7 开始引入。
另请参阅 updateCurrentFrame。
[自 QtAndroidAutomotive 6.7]
void QActivityView::forwardInputEvent(const QJniObject &inputEvent)
将inputEvent事件转发给底层活动。
此功能从 QtAndroidAutomotive 6.7 开始引入。
QRect QActivityView::geometry() const
返回以全局坐标系表示的管理活动的位置和大小。
另请参阅 setGeometry。
void QActivityView::initialize()
初始化底层Java资源,例如创建Surface对象。要求首先调用setGeometry。后续调用无效果。
[自 QtAndroidAutomotive 6.7]
bool QActivityView::isNewFrameAvailable() const
查询并返回如果可绘制新帧则返回true
,否则返回false
。
此功能从 QtAndroidAutomotive 6.7 开始引入。
另请参阅 updateCurrentFrame。
bool QActivityView::isRestoreOnAppResumeEnabled() const
返回是否在应用非活动状态下恢复丢失的活动。
另请参阅 setRestoreOnAppResume。
bool QActivityView::isVisible() const
返回管理活动是否可见。默认情况下为true。
另请参阅 setVisible。
void QActivityView::restore()
如果活动已被从ActivityView外部移除,则重新加载嵌入式活动。
[自 QtAndroidAutomotive 6.7]
void QActivityView::sendKeyClick(int keyCode)
将带keyCode键点击发送到底层活动。
此功能从 QtAndroidAutomotive 6.7 开始引入。
[自 QtAndroidAutomotive 6.7]
void QActivityView::sendTouchEvent(const QTouchEvent &touchEvent, const QTransform &transform = {})
将 touchEvent 发送到正在运行的 Android 活动中。它将可选的 transform 应用到触摸坐标。
此功能从 QtAndroidAutomotive 6.7 开始引入。
void QActivityView::setActivityName(const QString &packageName, const QString &className = QString())
设置要启动的活动包名和类名。必须使用完整的包名指定 packageName。className 是一个可选参数,用于指定应用包内的类名。当没有指定类名时,默认类用于启动包中的主活动。
activityView.setActivityName("com.android.deskclock");
可以使用完整的类名来指定类名。
activityView.setActivityName("com.android.deskclock", "com.android.deskclock.settings.SettingsActivity);
但是,如果 className 属性值中的第一个字符是点号,则将包名前缀到类名前。上面的代码片段可以缩短为以下形式
activityView.setActivityName("com.android.deskclock", ".settings.SettingsActivity);
如果组件已初始化,则活动立即启动。否则,启动将延迟到初始化。
通过提供的包名和类名解析的活动必须满足某些条件。有关详细信息,请查阅 已知问题和限制 部分。
另请参阅activityPackageName(),activityClassName(),以及 initialize()。
void QActivityView::setGeometry(const QRect &geometry)
设置组件在屏幕上的位置和大小。geometry 的 x 和 y 坐标位于全局坐标系中。必须在进行初始化之前调用此方法,以便确定底层资源的初始位置和大小。稍后调用时,它将立即更改活动的几何形状。
另请参阅geometry()。
void QActivityView::setRestoreOnAppResume(bool restore)
根据 restore 的值,打开/关闭在应用非活动状态下丢失后恢复嵌入式活动的功能。恢复发生在应用返回活动状态时。
另请参阅isRestoreOnAppResumeEnabled()。
void QActivityView::setVisible(bool visible)
设置可见性为 visible 的值。
另请参阅isVisible()。
[since QtAndroidAutomotive 6.7]
std::unique_ptr<QRhiTexture> QActivityView::startRendering(QRhi *rhi, int textureWidth, int textureHeight)
通过使用给定的 rhi 和 textureWidth 以及 textureHeight 创建 QRhiTexture 实例来启动活动的渲染。在失败的情况下返回创建的 QRhiTexture 的唯一指针或 nullptr。调用函数负责管理返回的值。
此功能从 QtAndroidAutomotive 6.7 开始引入。
另请参阅stopRendering()。
QActivityView::Status QActivityView::status() const
返回活动的当前状态。
另请参阅statusChanged()。
[信号]
void QActivityView::statusChanged(QActivityView::Status 状态)
当ActivityView的状态变化时,会发出此信号。状态状态表示状态的新值。
[从QtAndroidAutomotive 6.7开始]
void QActivityView::stopRendering()
停止渲染并解绑由QRhiTexture管理的底层纹理。在调用此函数后,用户负责删除之前通过调用startRendering()返回的QRhiTexture实例。
此功能从 QtAndroidAutomotive 6.7 开始引入。
另请参阅stopRendering().
[从QtAndroidAutomotive 6.7开始]
void QActivityView::updateCurrentFrame()
使用当前可用的帧更新由startRendering()返回的QRhiTexture。
此功能从 QtAndroidAutomotive 6.7 开始引入。
另请参阅updateCurrentFrame(), currentFrameTimestamp(), 和 isNewFrameAvailable().
在某些Qt许可证下可用。
了解更多。