ãã®ãããã¯ã¯éåžžã«åºç¯å²ã§ãããå€ãã®è³æããããŸããã®ã§ãèªã¿ãããããã«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ã»ã¯ã·ã§ã³ã«ãã©ã°ã€ã³ã®ååãè¿œå ããŸãã
... # Runtime dependencies which are not automatically detected Requires: - sailfishsilica-qt5 >= 0.10.9 - qt5-qtdeclarative-import-sensors ...
ãã©ã°ã€ã³ãæ¥ç¶ããåŸã 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 } } // model: QmlSensors.sensorTypes() } }
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ã°ã«ãŒãã®ãã£ãã«ã§ãè°è«ã§ããŸãã
èè ïŒããã·ã ã³ã¹ããªã³