ããã«ã¡ã¯ ãã®èšäºã¯ãSailfish OSã¢ãã€ã«ãã©ãããã©ãŒã åãã®ã¢ããªã±ãŒã·ã§ã³éçºã«é¢ããäžé£ã®èšäºã®ç¶ãã§ãã ãã®èšäºã§ã¯ãSailfish OSãå®è¡ããããã€ã¹ã»ã³ãµãŒã®äœ¿çšã«ã€ããŠèª¬æããŸãã
ãã®ãããã¯ã¯éåžžã«åºç¯å²ã§ãããå€ãã®è³æããããŸããã®ã§ãèªã¿ãããããã«2ã€ã®éšåã«åããããšã«ããŸããã 2çªç®ã®éšåã¯
ããããå
¥æã§ã
ãŸã ã
ãŸããã
ãã«ãã€ã³ã»ã³ãµãŒ-ããã¯ã¹ããŒããã©ã³ãæºãããŠã¹ããŒãã«ããŸãã åã¹ããŒããã©ã³ã«ã¯ãäœããã®ã»ã³ãµãŒãè£
åãããŠããŸãã ããã«ãã¹ããŒããã©ã³ã®ã»ã³ãµãŒã»ããã倧ããã»ã©ããã®æ©èœã¯åºããªããŸãã åœç¶ãSailfish OSãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãå®è¡ããŠããã¹ããŒããã©ã³ãäŸå€ã§ã¯ãããŸããã
ã»ãšãã©ã®ã¹ããŒããã©ã³ãŠãŒã¶ãŒã«ãšã£ãŠãã»ã³ãµãŒã¯ãããã€ã¹ãåŸãããããšãã«ç»é¢ãåããããéšå±ã®ç
§æãæžãããªããèŒåºŠãäžããããããªã©ãæ¥åžžã®äœ¿çšã«å©äŸ¿æ§ããããããŸãã ãã ããã»ã³ãµãŒã䜿çšãããšãæ¡åŒµçŸå®ããã³ä»®æ³çŸå®ãäœæãããŸã§ãããçå£ãªã¢ã€ãã¢ãå®è£
ã§ããŸãã ãã¡ããããã®ãããªèŠæš¡ã§ã®ã»ã³ãµãŒã®äœ¿çšã¯èæ
®ããŸãããããããã®æ©èœã®ããªãå®å
šãªå
šäœåã瀺ãããšãã§ããŸãã
Qt Sensors APIã®æŠèŠ
Sailfish OSã§ã»ã³ãµãŒãæäœããããã®ããŒã«ãããã¯Qt Sensors APIã®åœ¢åŒã§æäŸããããã€ãã£ãC ++ã©ã€ãã©ãªãšQMLã³ãŒãããçŽæ¥æäœããããã®ã€ã³ã¿ãŒãã§ã€ã¹ã®äž¡æ¹ãæäŸããŸãã
Qt Sensors APIããQMLã¿ã€ãã䜿çšããã«ã¯ã
qt5-qtdeclarative-import-sensorsãã©ã°ã€ã³ã®äŸåé¢ä¿ãSailfish OSã®ã¢ããªã±ãŒã·ã§ã³ãããžã§ã¯ãã«è¿œå ããå¿
èŠããããŸãã ãããè¡ãã«ã¯ã
ãããžã§ã¯ãã® YAMLãã¡ã€ã«
ã®Requiresã»ã¯ã·ã§ã³ã«ãã©ã°ã€ã³ã®ååãè¿œå ããŸãã
...
ãã©ã°ã€ã³ãæ¥ç¶ããåŸã
QtSensorsã¢ãžã¥ãŒã«ããŒãžã§ã³5以éãQMLã³ãŒãã«ã€ã³ããŒãããå¿
èŠããããŸãã å·çæç¹ã§ã¯ãSailfish OSã§å©çšå¯èœãªææ°ããŒãžã§ã³ã¯ããŒãžã§ã³5.2ã§ãã äŸã§äœ¿çšãããŸãã
import QtSensors 5.2
Sensor APIãC ++ã³ãŒãã§çŽæ¥äœ¿çšããå Žåããã©ã°ã€ã³ãžã®äŸåé¢ä¿ãè¿œå ããå¿
èŠã¯ãããŸããã 代ããã«ã
.proãããžã§ã¯ããã¡ã€ã«ã®
QtSensorsã©ã€ãã©ãªã䜿çšããŠã¬ã€ã¢ãŠãããã€ã³ãããå¿
èŠããããŸãã ããã¯ãããã«è¡ãè¿œå ããããšã§è¡ãããŸã
QT += sensors
ãã®åŸããã¹ãŠã®APIã¯ã©ã¹ããããžã§ã¯ãã«å«ãŸããããã«ãªããã©ã€ãã©ãªå
šäœãäžåºŠã«ã€ã³ããŒãã§ããããã«ãªããŸãã
#include <QtSensors>
ãŸãã¯ãå¿
èŠãªã¯ã©ã¹ã®ã¿ãããšãã°å é床èšïŒ
#include <QtSensors/QAccelerometer>
䜿çšå¯èœãªã»ã³ãµãŒã®ã»ããã¯ãäž»ã«ããã€ã¹ã®å
å¡«ã«äŸåããŸãã ããšãã°ãINOI R7ã¹ããŒããã©ã³ã«ã¯ãæ¹äœã»ã³ãµãŒãç
§æãå転ãåŸæãè¿æ¥ãç£å ŽåŒ·åºŠãããã³å é床èšããããŸãã
Sailfish OSã®å Žåãã»ã³ãµãŒãæäœãããšQt Sensors APIã®æ§ç¯ã«åœ¹ç«ã¡ãŸãã ãã®APIã§ã«ããŒãããã»ã³ãµãŒã®ã»ããã¯ããã®èšäºã§èª¬æãããŠãããã®ãããã¯ããã«åºç¯å²ã§ãã
Qtã»ã³ãµãŒã§ã¯ãåã»ã³ãµãŒã¯ãC ++ã¯ã©ã¹ãšã察å¿ããC ++ã¯ã©ã¹ãã©ããããQMLã¿ã€ããšãã2ã€ã®ã€ã³ã¿ãŒãã§ãŒã¹ã§è¡šãããŸãã ã©ã¡ãã®ã€ã³ã¿ãŒãã§ã€ã¹ãã»ã³ãµãŒæ©èœãžã®å®å
šãªã¢ã¯ã»ã¹ãæäŸãããããã©ã¡ãã䜿çšãããã¯éçºè
ã®èŠæãšèœåã®ã¿ã«äŸåããŸãã
ãŸããããã€ã¹ã§äœ¿çšå¯èœãªãã¹ãŠã®ã»ã³ãµãŒã®ãªã¹ããååŸããŸãã
ãã®ããã®
SensorGlobalèŠçŽ ãšãã®3ã€ã®ã¡ãœããããããŸãã
- æåådefaultSensorForTypeïŒtypeïŒ ;
- ãªã¹ã<string> sensorTypesïŒïŒ ;
- list <string> sensorsForTypeïŒtypeïŒ ã
sensorTypesã¯ãããã€ã¹ã«ååšãããã¹ãŠã®ã¿ã€ãã®ã»ã³ãµãŒã®ãªã¹ããè¿ãã
sensorsForTypeã¯ãæå®ãããã¿ã€ãã®ã»ã³ãµãŒã®ç»é²æžã¿èå¥åãè¿ããŸãã
defaultSensorForTypeã¯ãååã瀺ããšãããæå®ãããã¿ã€ãã®æšæºã»ã³ãµãŒã®èå¥åãã€ãŸããèå¥åãæ瀺çã«æå®ãããŠããªãå Žåã«QMLã³ã³ããŒãã³ãã䜿çšããã»ã³ãµãŒã®èå¥åãè¿ããŸãã
äžèšã®æ¹æ³ã®é¡äŒŒç©ãC ++ã«ååšããŸãã
QSensorsã¯ã©ã¹ã®éçé¢æ°ã¯æ¬¡ã®
ãšããã§ãã
- static QByteArray defaultSensorForTypeïŒconst QByteArrayïŒtypeïŒ ;
- éçQList <QByteArray> sensorTypesïŒïŒ ;
- static QList <QByteArray> sensorForTypeïŒconst QByteArrayïŒtypeïŒ ã
ãããã®ç®çã¯ã察å¿ããååãæã€QMLã¡ãœããã®ç®çãšå®å
šã«äžèŽããŠããŸãã
ãã¹ãŠã®ããã€ã¹ã»ã³ãµãŒã®ãªã¹ãã衚瀺ããå°ããªã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã
Page { SilicaListView { header: PageHeader { title: "Available sensor types" } anchors.fill: parent delegate: ListItem { Label { text: modelData anchors.verticalCenter: parent.verticalCenter x: Theme.horizontalPageMargin } }
Jolla Cã¹ããŒããã©ã³ã§ã¯ã
QmlSensors.sensorTypesïŒïŒã¡ãœããã¯æ¬¡ã®ã»ã³ãµãŒã®ãªã¹ããè¿ããŸãã
ããã¯ãå
ã»ã³ãµãŒãè¿æ¥ã»ã³ãµãŒãè§åºŠã»ã³ãµãŒãå é床èšãšããã»ã³ãµãŒã®ã»ãããããã€ã¹ã§å©çšã§ããããšã瀺ããŠããŸãã
ã»ã³ãµãŒã§åäœãããã¹ãŠã®ã¯ã©ã¹ã¯ã1ã€ã®å
±éã®
ã»ã³ãµãŒèŠªã¯ã©ã¹ããç¶æ¿ãããŸãã ãã®ã¯ã©ã¹ã¯æœè±¡ã»ã³ãµãŒã§ããããã®ããããã£ãšã¡ãœããã¯ãã®ãã¹ãŠã®åã¯ã©ã¹ã«é©çšã§ããŸãã
- active-çŸåšã®ã»ã³ãµãŒã¢ã¯ãã£ããã£ã決å®ããããããã£ã trueã«èšå®ããããšã¯ã startïŒïŒã¡ãœãããåŒã³åºãããšãšåãã§ã-å¯èœã§ããã°ãã»ã³ãµãŒããã®å€ã®èªã¿åããéå§ããŸãã ããã©ãããã falseãå²ãåœãŠããšèªã¿åããåæ¢ããŸãã
- alwaysOn-ç»é¢ããªãã®ãšãã®ã»ã³ãµãŒã®ã¢ã¯ãã£ããã£ã決å®ããããããã£ã
- axesOrientationMode-ããã€ã¹ã®äœçœ®ãå€ã®æž¬å®è»žã«ã©ã®ããã«åœ±é¿ããããå®çŸ©ããŸãã ããã©ã«ãã§ã¯ã軞ã¯ç»åã«ç€ºãããã«é
眮ãããŸãã
次ã®3ã€ã®ã¢ãŒããå©çšå¯èœã§ãã
- FixedOrientation-軞ã¯åžžã«ããã€ã¹ã«å¯Ÿããçžå¯Ÿçãªäœçœ®ãä¿æããŸãã ãã®å€ã¯æšæºã§ãããããã€ã¹ã軞æ¹åã¢ãŒãã®å€æŽããµããŒãããŠããªãå Žåã«äœ¿çšãããŸãã
- AutomaticOrientation-軞ã¯ç©ºéå
ã®äœçœ®ãç¶æããããã€ã¹ã«å¯Ÿããäœçœ®ãå€æŽããŸãã ã€ãŸããããã€ã¹ã®äœçœ®ã¯ã»ã³ãµãŒã®å€ã«åœ±é¿ããŸããã
- UserOrientation-軞ã®äœçœ®ã¯ãŠãŒã¶ãŒãèšå®ããŸãã
- busy-ã»ã³ãµãŒã®ããžãŒç¶æ
ãå«ãããããã£ã 圌ãå¥ã®ããã»ã¹ã§å¿ããå Žåãããã䜿çšããããšã¯äžå¯èœã§ãã
- dataRate-ã»ã³ãµãŒãšã®ããŒã¿äº€æã®é »åºŠãå«ãŸãã1ç§ãããã®æäœæ°ã§è¡šãããŸãã
- ãšã©ãŒ -çºçããæåŸã®ãšã©ãŒã®ã³ãŒãã ããããã£å€ã¯ãšã©ãŒãçºçãããšèªåçã«èšå®ãããæåã§å€æŽããããšã¯ã§ããŸããã
- reading - SensorReadingãå«ããããã㣠-ã»ã³ãµãŒããå€ãèªã¿åãã³ã³ããŒãã³ãã ã»ã³ãµãŒããæ
å ±ãåä¿¡ããã®ã¯ãã®äœ¿çšã§ãã ãã®ããããã£ã®å€ã¯ãèšå®ãããçºæ¿ã¬ãŒãã«åŸã£ãŠæŽæ°ãããæåã§æžã蟌ãããšã¯ã§ããŸããã
- type-ã»ã³ãµãŒã®æåååã ãªããžã§ã¯ãã®æ±ºå®æã«èšå®ãããå€æŽã§ããŸããã
- description-ã»ã³ãµãŒã説æããæååãå«ãŸããŸãã typeãšåæ§ã«ããªããžã§ã¯ãã®å®çŸ©æã«èšå®ãããå€æŽã§ããŸããã
- startïŒïŒ -ã»ã³ãµãŒããã®å€ã®èªã¿åããéå§ããŸããããã¯ã ã¢ã¯ãã£ããªããããã£ã«trueãå²ãåœãŠãããšãšåãã§ãã
- stopïŒïŒ -ã»ã³ãµãŒããã®å€ã®èªã¿åããåæ¢ããŸããããã¯ã ã¢ã¯ãã£ãããããã£ã«falseãå²ãåœãŠãããšãšåãã§ãã
Sensorã¯åãªãæœè±¡åã§ãããããçŽæ¥å®£èšããããšã¯ã§ããŸããã 代ããã«ãç¹å®ã®ã¿ã€ãã®ã»ã³ãµãŒã«å¯Ÿå¿ããã³ã³ããŒãã³ããç¶æ¿ããå¿
èŠããããŸãã
èªã¿åãããããã£ã«å«ãŸãã
SensorReadingã¿ã€ãã®ãªããžã§ã¯ãã¯ãã»ã³ãµãŒããå€ãèªã¿åããã¹ãŠã®ã³ã³ããŒãã³ãã®åºæ¬ã¿ã€ããšããŠæ©èœãããããç¹å¥ãªæ³šæãå¿
èŠã§ãã
èªã¿åãããããã£ã®å€ã¯ã
dataRatesããããã£ã§æå®ããããªãã¬ãã·ã¥ã¬ãŒãã«åŸã£ãŠå€æŽãããŸãããã»ã³ãµãŒãã¢ã¯ãã£ããªç¶æ
ã«ãããšãã®ã¿å€æŽãããŸãã ã»ã³ãµãŒãã¢ã¯ãã£ãã§ãªãå Žåã
èªã¿åãå€ã«ã¯ææ°ã®æž¬å®å€ãå«ãŸãã察å¿ããã»ã³ãµãŒã®ãµããŒãããªãããã€ã¹ã§ã¯
nullãå«ãŸããŸã ã
SensorReadingèªäœã«ã¯ãã»ã³ãµãŒããæåŸã«æ
å ±ãåä¿¡ãããæå»ãå«ã
ã¿ã€ã ã¹ã¿ã³ãããããã£ã®ã¿ããããŸããããã®ãµãã¯ã©ã¹ã¯ãããã€ã¹ã®ã»ã³ãµãŒããå€ãçŽæ¥æäŸããããããã£ãå®è£
ããŸãã
SensorReading㯠ããã®åå«ãšåæ§ã«ãçŽæ¥å®£èšã§ããŸããã ããããååŸããå¯äžã®æ¹æ³ã¯ã察å¿ããã»ã³ãµãŒãè¡šããªããžã§ã¯ãã®èªã¿åãããããã£ã«ã¢ã¯ã»ã¹ããããšã§ãã
å é床èš
ããããæãäžè¬çãªã»ã³ãµãŒã§ããå é床èšã䜿çšããäŸã䜿çšããŠãSailfish OSã»ã³ãµãŒã®æ€èšãéå§ã§ããŸãã Gã»ã³ãµãŒãšãåŒã°ããå é床èšã¯ãã¢ãã€ã«ããã€ã¹ã®ã»ãšãã©ãã¹ãŠã®ææ°ã¢ãã«ã«æèŒãããŠããŸãã å é床èšã®äžè¬çãªã¢ããªã±ãŒã·ã§ã³ã¯ãã¹ããŒããã©ã³ã®äœçœ®ãå€åãããšãã®å é床ã®å€åã®ç»é²ã§ããããã¯ãã¹ããŒããã©ã³ã®ç»é¢äžã®ç»åã®åããå€æŽããããã«äœ¿çšãããŸãã
ãã®ãããå é床èšãã枬å®å€ãåä¿¡ããããã«æåã«è¡ãããšã¯ãç®çã®ããŒãžã§
å é床èšã³ã³ããŒãã³ãã宣èšããŠã¢ã¯ãã£ãç¶æ
ã«ããããšã§ãããã®ç¹åŸŽã¯ã
Sensorã®
type ããããã£ã«QAccelerometerå€ãååšããããšã§ãã
Accelerometer { id: accelerometer active: true }
ãã¹ãŠãã³ã³ããŒãã³ããäœæããããã§ã«ããã€ã¹ã®å é床èšããã®èªã¿åãå€ãèªã¿åã£ãŠããŸãã ããããéçºè
ã¯ã©ã®ããã«ããŠãããã®ãŸãã«ãã®æ¬¡å
ãæã«å
¥ããããšãã§ããã§ããããïŒ ããã§ãäžèšã®
èªã¿åãããããã£ãæãåºãå¿
èŠããããŸãã ä»åã¯ãQMLã¿ã€ãã®
AccelerometerReading -
SensorReadingã®åå«ãå«ãŸããŠããŸããããã¯ããšããããæ°ããããããã£
x ã
yããã³
zãååŸããŠããŸãã ãããã«ã¯ããããã軞XãYãZã«æ²¿ã£ãããã€ã¹ã®ç·åœ¢å é床ãå«ãŸããŸãã
axesOrientationModeã®å€ãå€æŽããªãã£ãããã軞ã®äœçœ®ã¯æšæºã®ãŸãŸãã€ãŸãäžã®ç»åã«ç€ºãäœçœ®ã®ãŸãŸã§ãã
X軞ãšY軞ã«æ²¿ã£ãå é床å€ããç»é¢äžã®ç»åã®æ°Žå¹³äœçœ®ãšåçŽäœçœ®ã«æ¥ç¶ããŸãã ãããè¡ãã«ã¯ãX軞ã«æ²¿ã£ãŠå é床å€ã§æ°Žå¹³ã«ãY軞ã«æ²¿ã£ãŠå é床å€ã§åçŽã«ç»åãå€æããå€æãç»åã«é©çšããŸããç»é¢ã®å¢çãè¶
ããªãããã«ç»åã®èš±å®¹äœçœ®ã«å¶éãè¿œå ããŸãã
Image { id: fruct source: "http://social.fruct.org/content/img/fruct.png" transform: Translate { property double horizontalPosition: x - accelerometer.reading.x property double verticalPosititon: y + accelerometer.reading.y x: if (horizontalPosition < 0) { 0 } else if (horizontalPosition > page.width - fruct.width) { page.width - fruct.width } else { horizontalPosition } y: if (verticalPosititon < 0) { 0 } else if (verticalPosititon > page.height - fruct.height) { page.height - fruct.height } else { verticalPosititon } } }
ãã®çµæãã¹ããŒããã©ã³ãåŸãããšãFRUCTããŽãç»é¢äžãåãåããŸãã
Sensorãšåºå¥ãã
Accelerometerã³ã³ããŒãã³ãã®ãã1ã€ã®æ©èœã¯ã
accelerationModeããããã£ã®ååšã§ããããã¯ãå é床ã»ã³ãµãŒã«ããå€ã®èšç®æ¹æ³ãå¶åŸ¡ããŸãã å é床ãèšç®ããããã®3ã€ã®ã¢ãŒãããããŸãã
- å é床èšãçµå -éåãšãŠãŒã¶ãŒã«ããããã€ã¹ã®åãã®äž¡æ¹ã«ãã£ãŠåŒãèµ·ããããå é床ã®å€ãå
±åã§èæ
®ããŸãã
- Accelerometer.Gravity-éåã«ããå é床ã®å€ã®ã¿ãèæ
®ãããŸãã ãŠãŒã¶ãŒã«ããããã€ã¹ã®ç§»åã¯ãã»ã³ãµãŒããè¿ãããå€ã«ã¯åœ±é¿ããŸããããããã€ã¹ã®åŸæè§åºŠã¯èæ
®ãããŸãã
- Acceleration.User-ãŠãŒã¶ãŒã«ããããã€ã¹ã®åãã«ãã£ãŠåŒãèµ·ããããå é床ã®ã¿ãèæ
®ãããéåã«ãã£ãŠåŒãèµ·ããããå é床ã®å€ã¯èæ
®ãããŸããã ãã®ã¢ãŒãã§ã¯ãããã€ã¹ãéæ¢ããŠããå Žåãã»ã³ãµãŒå€ã¯0ã«è¿ããªããŸãã
ãã¹ãŠã®ããã€ã¹ãšã»ã³ãµãŒãèšç®ã¢ãŒããå€æŽããæ©èœããµããŒãããŠããããã§ã¯ãªãããšã«æ³šæããŠãã ããã ãã®æ©èœãæããªãããã€ã¹ã®å Žåãè€åã¢ãŒãã䜿çšããã
accelerationModeããããã£ã®å€ãå€æŽããŠã枬å®ã«åœ±é¿ã¯ãããŸããã
è¿æ¥ã»ã³ãµãŒ
è¿æ¥ã»ã³ãµãŒã¯ãç©ççã«æ¥è§Šããããšãªããè¿æ¥ãããªããžã§ã¯ãã«å¿çããŸãã ããšãã°ãæºåž¯é»è©±ã«åãä»ããããè¿æ¥ã»ã³ãµãŒã䜿çšãããšãé話äžã«é»è©±ããŠãŒã¶ãŒã®è³ã«è¿ã¥ããšã¿ããã¹ã¯ãªãŒã³ã»ã³ãµãŒããªãã«ãããããã±ããã«ç§»åãããšãã«ããã€ã¹ãã¹ãªãŒãã¢ãŒãã«ãããã§ããŸãã ãã®ããšãããã»ã³ãµãŒã®äž»ãªã¿ã¹ã¯ã¯ããã€ã¹ã®ç»é¢ããããã¯ããããšã§ãããããã«ãã£ãŠãŠãŒã¶ãŒã誀ã£ãŠãã¿ã³ãæŒããããèšç»å€ã®ã¢ã¯ã·ã§ã³ãå®è¡ãããããããšãé²ããŸãã éåžžããã®ãããªã»ã³ãµãŒã¯äžéšã®ããã€ã¹ã®ããã³ãããã«ã«ãããŸãã ããã³ãã«ã¡ã©çšã®ç©Žã®ããã«èŠããŸãã
QMLã®è¿æ¥ã»ã³ãµãŒã¯ã
ProximitySensorã³ã³ããŒãã³ãã§è¡šãããŸãã 芪ã³ã³ããŒãã³ããšã®å¯äžã®éãã¯ã察å¿ãã
ProximityReading QMLã¿ã€ãã®
nearããããã£ãååšããããã§ãã ãã®ããããã£ã¯ããªããžã§ã¯ããã»ã³ãµãŒã«ååè¿ãå Žæã«ããå Žåã«
åœãŠã¯ãŸããŸã ã
å¿
èŠãªã³ã³ããŒãã³ããå®çŸ©ããããnearããããã£ã®å€ãå€æŽããããã®ã·ã°ãã«ãã³ãã©ãŒãè¿œå ãããã®ã³ã³ããŒãã³ãã§å¿
èŠãªã¢ã¯ã·ã§ã³ãæ¢ã«å®è¡ã§ããŸãã ããšãã°ããªããžã§ã¯ããã»ã³ãµãŒã«è¿ã¥ããšãã¢ããªã±ãŒã·ã§ã³ãæå°éã«æããããæ¬åœã«äŸ¿å©ãªããšããããããããšãã§ããŸããããã¯ãã§ã«éçºè
ã®æ³ååã«äŸåããŠããŸãã
ProximitySensor { id: proximitySensor active: true } Connections { target: proximitySensor.reading onNearChanged: proximitySensor.reading.near ? appWindow.deactivate() : appWindow.activate() }
å
ã»ã³ãµãŒ
å
ã»ã³ãµãŒã¯ãã¢ãã€ã«ããã€ã¹ã®äžçã§æãå€ãã»ã³ãµãŒã®1ã€ã§ãã ãã®ã¿ã¹ã¯ã¯ãã¹ããŒããã©ã³ã䜿çšãããç°å¢ã®ç
§æã¬ãã«ã枬å®ããããšã§ãã ãããã®æž¬å®å€ã¯ãç»é¢ã®æããã調æŽããããã«ã¹ããŒããã©ã³ãœãããŠã§ã¢ã«ãã£ãŠäœ¿çšãããŸãïŒæãå Žæã§ã¯æãããäœäžããããã«ãã£ãŠãŠãŒã¶ãŒã®ç®ã«ãããè² è·ã軜æžãããããããªãŒé»åãç¯çŽãããŸãåºå¥ããããã«ã
QMLã¿ã€ãã®
LightSensorã¯ãã¹ã€ãŒãã®ç
§æã¬ãã«ãååŸããããã®APIãæäŸããŸããããã䜿çšããŠãç»é¢ã®æãããªã©ã®ã¢ããªã±ãŒã·ã§ã³èšå®ã調æŽã§ããŸãã ãŸããSailfish OSã«ã¯ç»é¢ã®ããã¯ã©ã€ãã¬ãã«ãèªåçã«èª¿æŽããããã®ãœãããŠã§ã¢ãæ¢ã«çµã¿èŸŒãŸããŠããŸãããããã¯éçºè
ãã¢ããªã±ãŒã·ã§ã³ã«åãããŠèª¿æŽããããšã劚ãããã®ã§ã¯ãããŸããã
ã»ã³ãµãŒèªã¿åãå€ãååŸããããã®ã³ã³ããŒãã³ãã¯ã
èªã¿åãããããã£ããååŸããããšãã§ããŸãã ä»åã¯ã
ç
§åºŠããããã£ãæã€
LightReadingãªããžã§ã¯ããå«ãŸããŸã-
ç
§åºŠã®å€ãå«ãŸããŸãã
nemo-qml-plugin-systemsettingsãã©ã°ã€ã³ãšçµã¿åãããŠå
ã»ã³ãµãŒã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ã«ç¹ã«é©ããèªå調æŽå¯èœãªèŒåºŠã¬ãã«ãå®çŸã§ããŸãã
LightSensorã®èªã¿åãå€ã
DisplaySettingsã³ã³ããŒãã³ãã®
èŒåºŠããããã£ã«é¢é£ä»ããåãå
¥ããããå€ã®å¶éãèšå®ããã ãã§ãèŒåºŠã¬ãã«ãç®çã®å¶éã«é©åããŸãã ãŸãã
autoBrightnessEnabledããããã£ã
falseã«èšå®ããŠããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ããèŒåºŠã¬ãã«ã®èªå調æŽãç¡å¹ã«ããå¿
èŠããããŸãã
import org.nemomobile.systemsettings 1.0 Page { LightSensor { id: lightSensor active: true } DisplaySettings { id: display autoBrightnessEnabled: false brightness: if (lightSensor.reading.illuminance < 50 ) { 50 } else if (lightSensor.reading.illuminance > 100) { 100 } else { lightSensor.reading.illuminance } } }
ããã«ã
LightSensorã¯ã»ã³ãµãŒã®èŠéè§ã«é¢ããæ
å ±ãæäŸããŸãã
fieldOfViewããããã£ã«ã¢ã¯ã»ã¹ããŠååŸã§ããŸãã ãã ãããã®æ©èœã¯ãã¹ãŠã®ããã€ã¹ã§äœ¿çšã§ããããã§ã¯ãªãã
fieldOfViewã«0ãå«ãŸããŠããå Žåãæ²ããããªã䜿çšãããã»ã³ãµãŒã¯ãã®ãããªæ©èœããµããŒãããŠããŸããã
Sailfish OSã§ã¯ãç
§åºŠã®ã¬ãã«ã枬å®ããããã®å¥ã®ã³ã³ããŒãã³ã
-AmbientLightSensorã
å©çšã§ããŸã ã ãã®æ©èœã¯ä»¥åã®ã»ã³ãµãŒãšã»ãŒå®å
šã«äŒŒãŠããŸãããã¹ã€ãŒãã®ç
§æå€ã®ä»£ããã«ã次ã®ãªã¹ããã以åã«æå®ãããå®æ°ãè¿ããŸãã
- AmbientLightReading.Undefined-ã©ã€ãã¬ãã«ãèªèã§ããŸããã
- AmbientLightReading.Dark-ããŒã¯
- AmbientLightReading.Twilight-é©åºŠã«æãã
- AmbientLightReading.Light-æããéšå±ã§ã
- AmbientLightReading.Bright-æŽå€©ã®æ¥é°ã§ã
- AmbientLightReading.Sunny-çŽå°æ¥å
ã®äžã
ãããã£ãŠãç
§æã¬ãã«ã®æ£ç¢ºãªå€ãåé·ã§ãããããããã®å€ã§ååãªå Žåã«ããã®ã³ã³ããŒãã³ãã䜿çšããããšããå§ãããŸãã ããšãã°ãæéã§ãå€éãã¢ãŒãã«å
¥ããªãŒããŒãäœæã§ããŸãã
ãŸããéåžžã©ãããã»ã³ãµãŒã³ã³ããŒãã³ãã決å®ãããŸãã
AmbientLightSensor { id: ambientLightSensor active: true }
å
ã®è²èšå®ã§èæ¯ãšããã¹ããäœæããŸãã
Rectangle { id: background anchors.fill: parent color: "white" Label { id: text text: " , " anchors { fill: parent leftMargin: Theme.horizontalPageMargin rightMargin: Theme.horizontalPageMargin } wrapMode: Text.WordWrap color: "black" } }
æåŸã«ãç»é¢äžã®ãªããžã§ã¯ãã«é©çšãããç¶æ
ãšé·ç§»ã®ã»ãããèšå®ãããŸãã ç¶æ
ã®å€åã®æ¡ä»¶ã¯ãæ£ç¢ºã«ã¯å
ã»ã³ãµãŒã®äœãå€ã§ãã
states: State { name: "dark" PropertyChanges { target: text color: "white" } PropertyChanges { target: background color: "black" } when: ambientLightSensor.reading.lightLevel === AmbientLightReading.Dark } transitions: Transition { to: "dark" reversible: true ColorAnimation { duration: 200 } }
æãå Žæã§ã¯ãå·ŠåŽã®ç»é¢ã¯å³åŽã®ãå€ãããŒãžã§ã³ã«ã¹ã ãŒãºã«ç§»è¡ããŸãã
ãããã«
ãã®èšäºã¯æåã®éšåã«ãããŸãã
ã2çªç®ã®éšåã§ã¯ãSailfish OSãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§äœ¿çšå¯èœãªã¡ã€ã³ã»ã³ãµãŒã«ã€ããŠåŒãç¶ãæ€èšããŸãã
æè¡çãªåé¡
ã¯ããã·ã¢èªã話ãã³ãã¥ããã£ã®Sailfish OSã®TelegramãŸãã¯
VKontakteã°ã«ãŒãã®
ãã£ãã«ã§ãè°è«ã§ããŸãã
èè
ïŒããã·ã ã³ã¹ããªã³