- class QSensor#
QSensor
类表示单个硬件传感器。更多...继承自:
QTiltSensor
、QTapSensor
、QRotationSensor
、QProximitySensor
、QPressureSensor
、QOrientationSensor
、QMagnetometer
、QLightSensor
、QLidSensor
、QIRProximitySensor
、QHumiditySensor
、QGyroscope
、QCompass
、QAmbientTemperatureSensor
、QAmbientLightSensor
、QAccelerometer
概要#
属性#
active
- 表示传感器是否活跃的值alwaysOn
- 表示传感器是否应该在屏幕关闭时继续运行的值availableDataRates
- 传感器支持的数据速率axesOrientationMode
- 影响屏幕方向变化如何影响读取值的模式busy
- 表示传感器是否忙碌的值connectedToBackend
- 表示传感器是否已连接到后端的值currentOrientation
- 旋转读取值时使用的当前方向dataRate
- 传感器应该运行的数据速率description
- 传感器的描述性字符串error
- 设置在传感器上的最后一个错误代码identifier
- 传感器的后端标识符outputRange
- 传感器使用的输出范围outputRanges
- 支持的输出范围列表reading
- 读取类skipDuplicates
- 指示是否应忽略重复的读取值type
- 传感器的类型userOrientation
- 在UserOrientation模式下旋转读取值的角度
方法#
def
__init__()
def
addFilter()
def
backend()
def
bufferSize()
def
dataRate()
def
description()
def
error()
def
filters()
def
identifier()
def
isActive()
def
isAlwaysOn()
def
isBusy()
def
maxBufferSize()
def
outputRange()
def
outputRanges()
def
reading()
def
removeFilter()
def
setActive()
def
setAlwaysOn()
def
setBufferSize()
def
setDataRate()
def
setIdentifier()
定义
type()
槽函数#
信号#
静态函数#
注意
本文档可能包含自动从C++翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您在翻译中发现问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单的方式告诉我们。
详细描述#
传感器的生命周期通常是
使用堆栈或堆创建
QSensor
的子类。根据应用需求进行设置。
开始接收值。
应用程序使用传感器数据。
停止接收值。
传感器数据通过
QSensorReading
及其子类传递。方向#
某些传感器会根据屏幕方向变化做出反应,例如
QAccelerometer
、QMagnetometer
和QRotationSensor
。这些被称为 可定向 传感器。对于可定向传感器,QSensor
支持根据屏幕方向修改读取值的报告。对于可定向传感器,
axesOrientationMode
属性控制方向如何影响读取值。在默认模式中,即
FixedOrientation
,读取值不会受到方向的影响。在AutomaticOrientation
模式下,读取值会根据当前屏幕方向自动旋转。最后,在UserOrientation
模式下,读取值将根据用户指定的方向进行旋转。此功能仅当后端支持且传感器可旋转时可用。可以通过使用
isFeatureSupported()
方法并传入AxesOrientation
标志来检查传感器是否可旋转。这里的定向值始终表示屏幕定向,而不是设备定向。屏幕定向是GUI的定向。例如,当将设备逆时针旋转90度时,屏幕定向将通过顺时针旋转90度来补偿,从而在设备旋转后GUI仍保持面向上方。请注意,应用程序可以锁定屏幕定向,例如强制使用纵向或横向模式。对于已锁定的定向,可旋转传感器在设备定向改变时不会对读取变化做出反应,因为可旋转传感器只对屏幕定向变化做出反应。这是有意义的,因为可旋转传感器的目的是使传感器定向与屏幕定向保持同步。
定向值范围从0到270度。定向是以顺时针方向应用的,例如,90度的定向值表示屏幕已从其原始位置顺时针旋转90度,以补偿向左旋转90度的设备。
- class Feature#
列出后端可能支持的可选功能。
所有传感器类型共有的特性是
常数
描述
QSensor.Buffering
后端支持读取的缓冲,由
bufferSize
属性控制。QSensor.AlwaysOn
后端支持更改空闲时的挂起策略,由alwaysOn属性控制。
QSensor.SkipDuplicates
后端支持跳过连续相同或非常相似的读取。可以通过将skipDuplicates属性设置为true来启用此功能。
QMagnetometer
的特性包括常数
描述
QSensor.GeoValues
后端支持返回地理值,可以使用returnGeoValues属性来控制。
QLightSensor
的特性包括常数
描述
QSensor.FieldOfView
后端指定其视野,这可以从fieldOfView属性中读取。
QAccelerometer
的特性包括常数
描述
QSensor.AccelerationMode
后端支持通过accelerationMode属性切换加速度计的模式。
QPressureSensor
的特点包括常数
描述
QSensor.PressureSensorTemperature
后端提供压力传感器的芯片温度
所有可定向传感器的特点包括
常数
描述
QSensor.AxesOrientation
后端支持将轴方向从默认的
FixedOrientation
更改为其他方向。
- class AxesOrientationMode#
描述读取值如何受到屏幕方向的影响。
常数
描述
QSensor.FixedOrientation
读取值不应用自动旋转。
QSensor.AutomaticOrientation
读取值根据屏幕方向自动旋转。
QSensor.UserOrientation
读取值根据
userOrientation
属性的角度旋转。
注意
当使用
from __feature__ import true_property
时可以直接使用属性,否则通过访问器函数。- property activeᅟ: bool#
该属性包含一个值,用于指示传感器是否处于活动状态。
如果传感器处于活动状态(返回值),则为 `true`。否则为 `false`。
请注意,将此值设置为 `true` 不会立即产生影响。相反,传感器将在事件循环到达时启动。
- 访问函数
- property alwaysOnᅟ: bool#
该属性包含一个值,用于指示当屏幕关闭时传感器是否应该保持运行。
某些平台在屏幕关闭时会暂停传感器。将此属性设置为 `true` 将确保传感器继续运行。
- property availableDataRatesᅟ: list of std.pair int,int#
该属性包含传感器支持的数据速率。
这是一个包含传感器支持的数据速率的列表。以赫兹为单位测量。
列表中的条目可以表示离散速率或一系列连续速率。连续速率的两个值相同。
请注意,此信息不是强制性的,因为并非所有传感器都以某种速率运行。在这种情况下,列表将为空。
- 访问函数
- 属性 axesOrientationMode: QSensor.AxesOrientationMode#
此属性控制屏幕方向变化时读取值的方式。
当设置为
FixedOrientation
(默认模式)时,不对读取值进行自动旋转。这是不支持AxesOrientation
特性的后端所提供的唯一模式。当设置为
AutomaticOrientation
时,当屏幕方向变化时,读取值将自动旋转。实际上,屏幕方向被消除。举例来说,假如设备旋转了180度,因此屏幕方向也从原始方向旋转了180度。如果没有自动轴方向,读取值将发生变化:X和Y值都将被取反,迫使应用程序开发者手动在应用程序代码中消除取反。自动轴方向会自动执行此操作,在此模式下,X和Y值将与默认屏幕方向相同。
这种自动旋转在有些情况下很有用,例如,在测量如何通过看加速度传感器的X轴值的气泡水平应用程序中。当设备和屏幕方向旋转90度时,应用程序开发者无需做任何改变,即使设备已旋转,他也可以继续使用X轴值。如果没有自动轴方向,应用程序开发者将需要查看Y值,从而在应用程序中添加依赖屏幕方向的读取不同轴值的代码。
UserOrientation
模式与AutomaticOrientation
模式非常相似,只是屏幕方向由手动控制,而不是自动确定。此时将使用userOrientation
属性的角来旋转读取值。由于读取值的旋转基于屏幕方向,Z值永远不会改变,因为Z轴与屏幕垂直。由于屏幕方向的改变以90度步长进行,所以读取值的旋转也是以90度步长进行的。
此属性仅用于可旋转的传感器。
- 属性 bufferSize: int#
此属性保存了缓冲区的大小。默认情况下,缓冲区大小为1,表示没有缓冲。如果最大缓冲区大小为1,则传感器不支持缓冲。
如果将bufferSize设置大于
maxBufferSize
将使用maxBufferSize
。当bufferSize大于1时,缓冲被打开。传感器将收集所需数量的样本,并将它们一次性交付给应用程序。它们将作为变化的读数批次交付给应用程序,因此应用程序立即处理每个读数或将其保存到其他地方尤为重要。
如果在缓冲过程中调用
stop()
,则不会交付部分缓冲区。当以缓冲选项启动传感器时,从那一刻开始就开始收集值。没有可以使用的预现有缓冲区。
某些后端仅支持启用或禁用缓冲区,不提供控制大小。在这种情况下,即使支持缓冲,可能也不会设置
maxBufferSize
和efficientBufferSize
属性。将bufferSize属性设置为任何大于1的值将启用缓冲。传感器启动后,bufferSize属性将由后端设置为实际值。参见
maxBufferSize
efficientBufferSize
- 访问函数
信号
bufferSizeChanged()
- property busy: bool#
该属性保存一个值以指示传感器是否忙碌。
一些传感器可能存在于系统中,但不可用。如果传感器忙碌,此函数将返回true。您无法启动传感器。
请注意,此函数仅在另一个进程正在使用传感器时返回true,而您正在使用传感器时不会返回true。
- 访问函数
信号
busyChanged()
- property connectedToBackend: bool#
该属性保存一个值来指示传感器是否已连接到后端。
未连接到后端的传感器无法执行任何有用的操作。
调用
connectToBackend()
方法立即迫使传感器连接到后端。如果您调用start()
,这会自动调用,因此只有当您需要访问传感器属性(例如在使用之前查询传感器的元数据)时才需要进行此操作。- 属性currentOrientation: int#
此属性持有用于旋转读取值的当前方向。
这可能不会与屏幕方向相同。例如,在
FixedOrientation
模式下,读取值不会被旋转,因此此属性为 0。在
UserOrientation
模式下,读取值根据userOrientation
属性进行旋转,因此此属性等于userOrientation
属性。在
AutomaticOrientation
模式下,读取值根据屏幕方向进行旋转,因此此属性将与当前屏幕方向相等。此属性由后端设置,并且仅对可旋转传感器有效。
- 属性dataRate: int#
此属性持有传感器应运行的速率。
以赫兹为单位测量。
数据速率是传感器可以检测变化的最大频率。
设置此属性不可移植,可能与其他应用发生冲突。请与传感器后端和平台文档检查有关多个应用程序请求数据速率的策略。
默认值(0)表示应用程序不关心数据速率。应用程序应考虑使用基于计时器的当前值轮询或确保处理值的代码可以非常快速地运行,因为该平台可能每秒提供数百次更新。
应在调用
start()
之前设置此参数,因为传感器可能不会在运行时注意到此值的变化。请注意,没有机制可以确定平台当前使用的数据速率。
- 访问函数
- property 描述: str#
此属性包含传感器的描述字符串。
- 访问函数
- property 有效缓冲区大小: int#
该属性包含最有效的缓冲区大小。通常为1(表示没有特定大小是最有效的)。某些传感器驱动程序具有FIFO缓冲区,这使得一次性传输FIFO大小的读取值更为高效。
- property 错误: int#
此属性包含传感器上设置的最后一个错误代码。
请注意,错误代码是特定于传感器的。
- 访问函数
- property 标识符: QByteArray#
此属性包含传感器的后端标识符。
请注意,标识符在传感器连接到后端时会自动填充。如果您想连接特定的后端,应在
connectToBackend()
方法之前调用setIdentifier()
。- property 最大缓冲区大小: int#
该属性包含最大缓冲区大小。
请注意,这可能是1,在这种情况下,传感器不支持任何形式的缓冲。在这种情况下,
isFeatureSupported
(Buffering
)也将返回false。- 属性 outputRange: int#
此属性保存传感器正在使用的输出范围。
此值表示要在
outputRanges
列表中使用的索引。设置此属性不可移植,并可能导致与其它应用程序发生冲突。有关多个应用程序请求输出范围的政策,请参阅传感器后端和平台文档。
默认值(-1)表示应用程序不关心输出范围。
请注意,没有机制可以确定平台当前正在使用的输出范围。
参见
- 属性 outputRanges: list of qoutputrange#
此属性保存传感器支持的输出范围列表。
传感器可能具有多个输出范围。通常,为了降低精度以换取更大的测量范围,会这样做。
请注意,此信息不是强制的。此信息通常仅在具有可选输出范围的传感器(例如典型的加速度计)中可用。
- 访问函数
- 属性 reading: QSensorReading#
此属性保存读取类。
读取类提供对传感器读取的访问。读取对象是接收到的最新传感器读取的易失性缓存,因此应用程序应立即处理读取或保存值供以后处理。
请注意,直到连接到后端,此值将返回0。
请注意,在调用
start()
后,读取不一定立即可用。应用程序必须等待readingChanged()
信号被发出。- 访问函数
- 属性 skipDuplicates: bool#
该属性表示是否应排除重复的读取值。
当启用重复跳过时,具有相同或非常相似的连续读取值将被省略。这有助于减少处理的数量,因为提供的传感器读取较少。结果,读取值以不规则的时间间隔到达。
重复跳过不仅适用于完全相同的读取值,还适用于相当相似的读取值,因为即使设备未移动,每个传感器也有一定的抖动。
对该属性的支持取决于后端。使用
isFeatureSupported()
检查当前平台是否支持。默认情况下禁用重复跳过。
重复跳过在传感器启动时生效,更改活动传感器期间的属性没有立即效果。
- property typeᅟ: QByteArray#
该属性表示传感器的类型。
- 访问函数
- property userOrientationᅟ: int#
该属性表示用于在
UserOrientation
模式中旋转读取值的角。当将
axesOrientationMode
属性设置为UserOrientation
时,旋转读取值的角将从该属性获取。在其他模式中,该属性没有效果。默认值为0。唯一有效值是0、90、180和270,因为这些是唯一可能的屏幕方向。
该属性仅适用于可旋转的传感器。
- __init__(type[, parent=None])#
- 参数:
type –
QByteArray
parent –
QObject
警告
本节包含从C++自动翻译成Python的片段,可能包含错误。
将
type
传感器作为parent
的子对象构建。如果存在特定传感器类型的派生类,则不要使用此构造函数。
错误的方法是使用基类构造函数
magnetometer = QSensor(QMagnetometer.sensorType, self)
正确的方法是创建派生类的实例
magnetometer = QMagnetometer(self)
派生类有额外的属性和数据成员,这些成员对于某些功能是必需的,例如在
QMagnetometer
中支持地理值或QAccelerometer
支持加速度模式。这些功能只有在从QSensor
子类创建传感器实例时才能正确工作。仅在没有可用的派生传感器类时才使用此构造函数。请注意,所有内置传感器都有一个派生类,因此在使用此构造函数时,通常仅当实现自定义传感器时才需要。
- activeChanged()#
当
active
属性发生变化时,发出此信号。参见
active
# 属性的更新通知信号。
- addFilter(filter)#
- 参数:
filter –
QSensorFilter
向传感器添加一个
filter
。传感器不会获取对过滤器的所有权。
QSensorFilter
会通知传感器如果它被销毁。- alwaysOnChanged()#
当
alwaysOn
属性发生变化时,发出此信号。# 属性的更新通知信号。
- availableDataRates()#
- 返回类型:
_std::pair
的列表
# 属性的获取器。
- availableSensorsChanged()#
当可用传感器列表发生更改时,会发出此信号。程序可用的传感器通常不会随时间改变,但是一些可用传感器可能表示未经永久连接的硬件。例如,通过蓝牙连接的游戏控制器在开启时将可用,而在关闭时将不可用。
- axesOrientationMode()#
- 返回类型:
axesOrientationMode属性的获取器。
- axesOrientationModeChanged(axesOrientationMode)#
- 参数:
axesOrientationMode –
AxesOrientationMode
axesOrientationMode属性的属性变更通知信号。
- backend()#
- 返回类型:
- bufferSize()#
- 返回类型:
int
bufferSize属性的获取器。
- bufferSizeChanged(bufferSize)#
- 参数:
bufferSize – int
bufferSize属性的通知信号。
- busyChanged()#
当传感器不再忙碌时,会发出此信号。这可以用来在传感器变可用时获取传感器。
sensor.start(); if (sensor.isBusy()) { // need to wait for busyChanged signal and try again }
busy属性的通知信号。
- connectToBackend()#
- 返回类型:
bool
尝试连接到传感器后端。
如果在调用此方法前设置了类型,并且找到了合适的后端,则返回true,否则返回false。
如果直接使用
QSensor
,则必须在调用此方法前设置类型。- currentOrientation()#
- 返回类型:
int
属性
currentOrientationᅟ
的获取器。- currentOrientationChanged(currentOrientation)#
- 参数:
currentOrientation - int
属性
currentOrientationᅟ
的通知信号。- dataRate()#
- 返回类型:
int
属性
dataRateᅟ
的获取器。- dataRateChanged()#
属性
dataRateᅟ
的通知信号。- static defaultSensorForType(type)#
- 参数:
type –
QByteArray
- 返回类型:
返回
type
的默认传感器标识符。这由配置文件设置,必要时可以覆盖。如果没有提供默认值,系统将返回为type
注册的第一个传感器。请注意,存在特殊案例逻辑以防止当已为同一类型注册了其他后端时,通用插件的插件变得默认。这种逻辑意味着以
generic.
开头的后端标识符只有在没有为该类型注册其他后端,或者它在Sensors.conf
中指定时,才会是默认的。参见
- description()#
- 返回类型:
str
属性
descriptionᅟ
的获取器。- efficientBufferSize()#
- 返回类型:
int
属性
efficientBufferSizeᅟ
的获取器。- efficientBufferSizeChanged(efficientBufferSize)#
- 参数:
efficientBufferSize - int
属性
efficientBufferSizeᅟ
的通知信号。- error()#
- 返回类型:
int
属性
errorᅟ
的获取器。- filters()#
- 返回类型:
. QSensorFilter 列表
返回目前附加到传感器上的过滤器。
- identifier()#
- 返回类型:
属性
identifierᅟ
的获取器。- identifierChanged()#
属性
identifierᅟ
的通知信号。- isActive()#
- 返回类型:
bool
属性
activeᅟ
的获取器。- isAlwaysOn()#
- 返回类型:
bool
属性
alwaysOnᅟ
的获取器。- isBusy()#
- 返回类型:
bool
属性
busyᅟ
的获取器。- isConnectedToBackend()#
- 返回类型:
bool
属性
connectedToBackendᅟ
的获取器。检查后端是否支持特定功能。
QtSensors 支持丰富的 API,用于控制和提供有关传感器的信息。显然,并非所有后端都能支持所有这些功能。
要检查当前后端是否支持功能
feature
,请调用此函数。后端需要连接到传感器,否则将返回 false。调用
connectToBackend()
或start()
将创建与后端的连接。后端必须实现
isFeatureSupported()
以使此功能能够工作。如果后端已连接,则返回功能是否支持;如果后端未连接,则返回 false。
- maxBufferSize()#
- 返回类型:
int
属性
maxBufferSize
的获取器。- maxBufferSizeChanged(maxBufferSize)#
- 参数:
maxBufferSize – int
属性
maxBufferSize
的通知信号。- outputRange()#
- 返回类型:
int
属性
outputRange
的获取器。- outputRanges()#
- 返回类型:
qoutputrange 的列表
属性
outputRanges
的获取器。- reading()#
- 返回类型:
属性
reading
的获取器。- readingChanged()#
收到新的传感器读取值时发出此信号。
传感器读取值可以在
reading
属性中找到。请注意,读取对象是最新的接收到的传感器读取值的易失性缓存,因此应用程序应立即处理读取值或将值保存在某处以供以后处理。在首次发出此信号之前,读取对象将具有未初始化的数据。
参见
属性
reading
的通知信号。- removeFilter(filter)#
- 参数:
filter –
QSensorFilter
从传感器中移除
filter
。- sensorError(error)#
- 参数:
error – int
当传感器上设置了错误码时,会发出此信号。请注意,某些错误会导致传感器停止工作。你应该调用
isActive()
以确定传感器是否仍然正在运行。属性
errorᅟ
的通知信号。- static sensorTypes()#
- 返回类型:
返回一个包含所有传感器类型列表的 QByteArray
返回所有传感器类型的列表。
- static sensorsForType(type)#
- 参数:
type –
QByteArray
- 返回类型:
返回一个包含所有传感器类型列表的 QByteArray
返回指定
type
的每个传感器的ID列表。如果没有可用的传感器,该列表将为空。- setActive(active)#
- 参数:
active – bool
参见
属性
activeᅟ
的设置器。- setAlwaysOnalwaysOn#
- 参数:
alwaysOn – bool
参见
属性
alwaysOnᅟ
的设置器。- setAxesOrientationModeaxesOrientationMode#
- 参数:
axesOrientationMode –
AxesOrientationMode
属性
axesOrientationModeᅟ
的设置器。- setBufferSizebufferSize#
- 参数:
bufferSize – int
参见
属性
bufferSizeᅟ
的设置器。- setCurrentOrientationcurrentOrientation#
- 参数:
currentOrientation - int
将当前屏幕方向设置为
currentOrientation
。这是在屏幕方向或userOrientation
属性改变时从后端调用的。- setDataRaterate#
- 参数:
rate – int
参见
属性
dataRate
的设置器。- setEfficientBufferSize(efficientBufferSize)#
- 参数:
efficientBufferSize - int
设置高效的缓冲区大小为
efficientBufferSize
。此方法应在后端调用。- setIdentifier(identifier)#
- 参数:
identifier –
QByteArray
参见
属性
identifier
的设置器。- setMaxBufferSize(maxBufferSize)#
- 参数:
maxBufferSize – int
将最大缓冲区大小设置为
maxBufferSize
。此方法应在后端调用。- setOutputRange(index)#
- 参数:
index – int
属性
outputRange
的设置器。- setSkipDuplicates(skipDuplicates)#
- 参数:
skipDuplicates – bool
设置跳过重复值的功能为
skipDuplicates
。属性
skipDuplicates
的设置器。- setUserOrientation(userOrientation)#
- 参数:
userOrientation – int
属性
userOrientation
的设置器。- skipDuplicates()#
- 返回类型:
bool
属性
skipDuplicates
的获取器。- skipDuplicatesChanged(skipDuplicates)#
- 参数:
skipDuplicates – bool
当
skipDuplicates
属性改变时,会发出这个信号。属性
skipDuplicates
的通知信号。- start()#
- 返回类型:
bool
开始从传感器获取值。如果成功 started,则返回 true,否则返回 false。
传感器可能由于多种原因无法启动。
一旦一个应用程序启动了传感器,它必须等待传感器接收到新值,然后才能查询传感器的值。这是因为传感器接收系统值的机制。传感器(通常)不会轮询新值,而是在发生时会将新值推送到传感器。
例如,此代码将无法按预期工作。
sensor->start(); sensor->reading()->x(); // no data available
要正确运行,访问读取的代码应确保已发射
readingChanged()
信号。connect(sensor, SIGNAL(readingChanged()), this, SLOT(checkReading())); sensor->start(); } void MyClass::checkReading() { sensor->reading()->x();
参见
忙碌
- stop()#
停止从传感器检索值。
这释放了传感器,以便其他进程可以使用它。
参见
忙碌
- type()#
- 返回类型:
属性
typeᅟ
的获取器。- userOrientation()#
- 返回类型:
int
属性
userOrientationᅟ
的获取器。- userOrientationChanged(userOrientation)#
- 参数:
userOrientation – int
属性
userOrientationᅟ
的通知信号。