# Sensor组件<a name="ZH-CN_TOPIC_0000001148682248"></a> - [简介](#section11660541593) - [目录](#section44981327519) - [约æŸ](#section98068674513) - [使用](#section1581412211528) - [接å£è¯´æ˜Ž](#section15684191115524) - [使用说明](#section1543714111810) - [相关仓](#section96071132185310) ## 简介<a name="section11660541593"></a> ä¼ æ„Ÿå™¨æ˜¯æŒ‡ç”¨äºŽä¾¦æµ‹çŽ¯å¢ƒä¸æ‰€å‘生事件或å˜åŒ–ï¼Œå¹¶å°†æ¤æ¶ˆæ¯å‘é€è‡³å…¶ä»–电å设备(如ä¸å¤®å¤„ç†å™¨ï¼‰çš„è®¾å¤‡ï¼Œé€šå¸¸ç”±æ•æ„Ÿç»„件和转æ¢ç»„件组æˆã€‚ä¼ æ„Ÿå™¨æ˜¯å®žçŽ°ç‰©è”网智能化的é‡è¦åŸºçŸ³ï¼Œä¸ºå®žçŽ°å…¨åœºæ™¯æ™ºæ…§åŒ–æˆ˜ç•¥ï¼Œæ”¯æ’‘â€œ1+8+Nâ€äº§å“éœ€æ±‚ï¼Œéœ€è¦æž„ç‘ç»Ÿä¸€çš„ä¼ æ„Ÿå™¨ç®¡ç†æ¡†æž¶ï¼Œè¾¾åˆ°ä¸ºå„产å“/业务æä¾›ä½Žæ—¶å»¶ã€ä½ŽåŠŸè€—çš„æ„ŸçŸ¥æ•°æ®çš„ç›®çš„ã€‚æ ¹æ®ç”¨é€”å¯åˆ†ä¸ºä»¥ä¸‹å…大类: - è¿åŠ¨ç±»ï¼šåŠ é€Ÿåº¦ã€é™€èžºä»ªã€é‡åŠ›ã€çº¿æ€§åŠ é€Ÿåº¦ä¼ æ„Ÿå™¨ç‰ - å§¿æ€ç±»ï¼šæ—‹è½¬çŸ¢é‡ã€æ–¹å‘ä¼ æ„Ÿå™¨ç‰ - 环境类:ç£åŠ›è®¡ã€æ°”åŽ‹ã€æ¹¿åº¦ä¼ æ„Ÿå™¨ç‰ - å…‰çº¿ç±»ï¼šçŽ¯å¢ƒå…‰ã€æŽ¥è¿‘å…‰ã€è‰²æ¸©ä¼ æ„Ÿå™¨ç‰ - å¥åº·ç±»ï¼šå¿ƒçއã€å¿ƒè·³ä¼ æ„Ÿå™¨ç‰ - 其它:éœå°”ä¼ æ„Ÿå™¨ã€æ‰‹æ¡ä¼ æ„Ÿå™¨ç‰ ä¼ æ„Ÿå™¨æž¶æž„å›¾å¦‚ä¸‹æ‰€ç¤ºï¼š **图 1** Sensor架构图<a name="fig18632347122018"></a>  ## 目录<a name="section44981327519"></a> sensor导入模å—的示例代ç 如下: ``` /base/sensors/sensor ├── frameworks # 框架代ç │ └── native # sensor客户端代ç ├── interfaces # 对外接å£å˜æ”¾ç›®å½• │ ├── native # sensor native实现 │ └── plugin # Js API ├── sa_profile # æœåŠ¡åç§°å’ŒæœåŠ¡çš„åŠ¨æ€åº“çš„é…置文件 ├── services # æœåŠ¡çš„ä»£ç 目录 │ └── sensor # ä¼ æ„Ÿå™¨æœåŠ¡ï¼ŒåŒ…æ‹¬åŠ é€Ÿåº¦ã€é™€èžºä»ªç‰ï¼Œä¸ŠæŠ¥ä¼ æ„Ÿå™¨æ•°æ® â””â”€â”€ utils # 公共代ç ,包括æƒé™ã€é€šä¿¡ç‰èƒ½åŠ› ``` ## 约æŸ<a name="section98068674513"></a> - è¦ä½¿ç”¨ä¼ æ„Ÿå™¨çš„åŠŸèƒ½ï¼Œè®¾å¤‡å¿…é¡»å…·æœ‰å¯¹åº”çš„ä¼ æ„Ÿå™¨å™¨ä»¶ã€‚ - 针对æŸäº›ä¼ 感器,开å‘者需è¦è¯·æ±‚相应的æƒé™ï¼Œæ‰èƒ½èŽ·å–åˆ°ç›¸åº”ä¼ æ„Ÿå™¨çš„æ•°æ®ã€‚ **表 1** ä¼ æ„Ÿå™¨æƒé™åˆ—表 <a name="table1379101653916"></a> <table><thead align="left"><tr id="row137911161397"><th class="cellrowborder" valign="top" width="23.46765323467653%" id="mcps1.2.5.1.1"><p id="p15138132134118"><a name="p15138132134118"></a><a name="p15138132134118"></a>ä¼ æ„Ÿå™¨</p> </th> <th class="cellrowborder" valign="top" width="27.61723827617238%" id="mcps1.2.5.1.2"><p id="p2798169398"><a name="p2798169398"></a><a name="p2798169398"></a>æƒé™å</p> </th> <th class="cellrowborder" valign="top" width="13.358664133586636%" id="mcps1.2.5.1.3"><p id="p14791716163914"><a name="p14791716163914"></a><a name="p14791716163914"></a>æ•æ„Ÿçº§åˆ«</p> </th> <th class="cellrowborder" valign="top" width="35.55644435556444%" id="mcps1.2.5.1.4"><p id="p379171633919"><a name="p379171633919"></a><a name="p379171633919"></a>æƒé™æè¿°</p> </th> </tr> </thead> <tbody><tr id="row12791216173912"><td class="cellrowborder" valign="top" width="23.46765323467653%" headers="mcps1.2.5.1.1 "><p id="p41385264116"><a name="p41385264116"></a><a name="p41385264116"></a>åŠ é€Ÿåº¦ä¼ æ„Ÿå™¨ã€åŠ é€Ÿåº¦æœªæ ¡å‡†ä¼ æ„Ÿå™¨ã€çº¿æ€§åŠ é€Ÿåº¦ä¼ æ„Ÿå™¨</p> </td> <td class="cellrowborder" valign="top" width="27.61723827617238%" headers="mcps1.2.5.1.2 "><p id="p177941653914"><a name="p177941653914"></a><a name="p177941653914"></a>ohos.permission.ACCELEROMETER</p> </td> <td class="cellrowborder" valign="top" width="13.358664133586636%" headers="mcps1.2.5.1.3 "><p id="p207991683914"><a name="p207991683914"></a><a name="p207991683914"></a>system_grant</p> </td> <td class="cellrowborder" valign="top" width="35.55644435556444%" headers="mcps1.2.5.1.4 "><p id="p118061614399"><a name="p118061614399"></a><a name="p118061614399"></a>å…è®¸è®¢é˜…åŠ é€Ÿåº¦ä¼ æ„Ÿå™¨çš„æ•°æ®ã€‚</p> </td> </tr> <tr id="row480116123911"><td class="cellrowborder" valign="top" width="23.46765323467653%" headers="mcps1.2.5.1.1 "><p id="p1213992174111"><a name="p1213992174111"></a><a name="p1213992174111"></a>é™€èžºä»ªä¼ æ„Ÿå™¨ã€é™€èžºä»ªæœªæ ¡å‡†ä¼ 感器</p> </td> <td class="cellrowborder" valign="top" width="27.61723827617238%" headers="mcps1.2.5.1.2 "><p id="p13807165395"><a name="p13807165395"></a><a name="p13807165395"></a>ohos.permission.GYROSCOPE</p> </td> <td class="cellrowborder" valign="top" width="13.358664133586636%" headers="mcps1.2.5.1.3 "><p id="p188031617391"><a name="p188031617391"></a><a name="p188031617391"></a>system_grant</p> </td> <td class="cellrowborder" valign="top" width="35.55644435556444%" headers="mcps1.2.5.1.4 "><p id="p4804168392"><a name="p4804168392"></a><a name="p4804168392"></a>å…è®¸è®¢é˜…é™€èžºä»ªä¼ æ„Ÿå™¨çš„æ•°æ®ã€‚</p> </td> </tr> <tr id="row68051693916"><td class="cellrowborder" valign="top" width="23.46765323467653%" headers="mcps1.2.5.1.1 "><p id="p191397210413"><a name="p191397210413"></a><a name="p191397210413"></a>计æ¥å™¨</p> </td> <td class="cellrowborder" valign="top" width="27.61723827617238%" headers="mcps1.2.5.1.2 "><p id="p9802016183911"><a name="p9802016183911"></a><a name="p9802016183911"></a>ohos.permission.ACTIVITY_MOTION</p> </td> <td class="cellrowborder" valign="top" width="13.358664133586636%" headers="mcps1.2.5.1.3 "><p id="p11801216143916"><a name="p11801216143916"></a><a name="p11801216143916"></a>user_grant</p> </td> <td class="cellrowborder" valign="top" width="35.55644435556444%" headers="mcps1.2.5.1.4 "><p id="p48010163399"><a name="p48010163399"></a><a name="p48010163399"></a>å…许订阅è¿åŠ¨çŠ¶æ€ã€‚</p> </td> </tr> <tr id="row20323104234015"><td class="cellrowborder" valign="top" width="23.46765323467653%" headers="mcps1.2.5.1.1 "><p id="p3139172144118"><a name="p3139172144118"></a><a name="p3139172144118"></a>å¿ƒçŽ‡ä¼ æ„Ÿå™¨</p> </td> <td class="cellrowborder" valign="top" width="27.61723827617238%" headers="mcps1.2.5.1.2 "><p id="p7323942174013"><a name="p7323942174013"></a><a name="p7323942174013"></a>ohos.permission.READ_HEALTH_DATA</p> </td> <td class="cellrowborder" valign="top" width="13.358664133586636%" headers="mcps1.2.5.1.3 "><p id="p1232314214407"><a name="p1232314214407"></a><a name="p1232314214407"></a>user_grant</p> </td> <td class="cellrowborder" valign="top" width="35.55644435556444%" headers="mcps1.2.5.1.4 "><p id="p12323144254018"><a name="p12323144254018"></a><a name="p12323144254018"></a>å…许读å–å¥åº·æ•°æ®ã€‚</p> </td> </tr> </tbody> </table> ## 使用<a name="section1581412211528"></a> æœ¬èŠ‚ä»¥ä¼ æ„Ÿå™¨ JS API为例,说明其æä¾›çš„具体功能以åŠä½¿ç”¨æµç¨‹ã€‚ ### 接å£è¯´æ˜Ž<a name="section15684191115524"></a> ä¼ æ„Ÿå™¨ JS API:监å¬ä¼ 感器数æ®å˜åŒ–,如果多次调用该接å£ï¼Œåˆ™æœ€åŽä¸€æ¬¡è°ƒç”¨ç”Ÿæ•ˆã€‚JS API开放的能力如下: **表 2** JS APIçš„ä¸»è¦æŽ¥å£ <a name="table13821942165419"></a> <table><thead align="left"><tr id="row6821194225417"><th class="cellrowborder" valign="top" width="40.11%" id="mcps1.2.3.1.1"><p id="p3822542145420"><a name="p3822542145420"></a><a name="p3822542145420"></a>接å£å</p> </th> <th class="cellrowborder" valign="top" width="59.89%" id="mcps1.2.3.1.2"><p id="p0822942175411"><a name="p0822942175411"></a><a name="p0822942175411"></a>æè¿°</p> </th> </tr> </thead> <tbody><tr id="row1782284211544"><td class="cellrowborder" valign="top" width="40.11%" headers="mcps1.2.3.1.1 "><p id="p18666622171316"><a name="p18666622171316"></a><a name="p18666622171316"></a>on(type: SensorType, callback: Callback<Response>, options?: Options)</p> </td> <td class="cellrowborder" valign="top" width="59.89%" headers="mcps1.2.3.1.2 "><p id="p1476355071517"><a name="p1476355071517"></a><a name="p1476355071517"></a>监å¬ä¼ 感器数æ®å˜åŒ–。SensorType为支æŒè®¢é˜…çš„ä¼ æ„Ÿå™¨ç±»åž‹ï¼Œcallbackè¡¨ç¤ºè®¢é˜…ä¼ æ„Ÿå™¨çš„å›žè°ƒå‡½æ•°ï¼Œoptionsä¸ºè®¾ç½®ä¼ æ„Ÿå™¨æ•°æ®ä¸ŠæŠ¥çš„æ—¶é—´é—´éš”。</p> </td> </tr> <tr id="row1489993155613"><td class="cellrowborder" valign="top" width="40.11%" headers="mcps1.2.3.1.1 "><p id="p1490010315564"><a name="p1490010315564"></a><a name="p1490010315564"></a>once(type: SensorType, callback: Callback<Response>)</p> </td> <td class="cellrowborder" valign="top" width="59.89%" headers="mcps1.2.3.1.2 "><p id="p5900163115564"><a name="p5900163115564"></a><a name="p5900163115564"></a>监å¬ä¼ 感器数æ®å˜åŒ–一次。SensorType为支æŒè®¢é˜…çš„ä¼ æ„Ÿå™¨ç±»åž‹ï¼Œcallbackè¡¨ç¤ºè®¢é˜…ä¼ æ„Ÿå™¨çš„å›žè°ƒå‡½æ•°ã€‚</p> </td> </tr> <tr id="row1909165317562"><td class="cellrowborder" valign="top" width="40.11%" headers="mcps1.2.3.1.1 "><p id="p16909135319564"><a name="p16909135319564"></a><a name="p16909135319564"></a>off(type: SensorType, callback: Callback<Response>)</p> </td> <td class="cellrowborder" valign="top" width="59.89%" headers="mcps1.2.3.1.2 "><p id="p3909165315613"><a name="p3909165315613"></a><a name="p3909165315613"></a>å–æ¶ˆè®¢é˜…ä¼ æ„Ÿå™¨æ•°æ®ã€‚SensorType为支æŒçš„å–æ¶ˆè®¢é˜…çš„ä¼ æ„Ÿå™¨ç±»åž‹ï¼Œcallbackè¡¨ç¤ºå–æ¶ˆè®¢é˜…ä¼ æ„Ÿå™¨æ˜¯å¦æˆåŠŸã€‚</p> </td> </tr> </tbody> </table> ### 使用说明<a name="section1543714111810"></a> 1. 导包。 2. 注册并监å¬åŠ é€Ÿåº¦ä¼ æ„Ÿå™¨æ•°æ®çš„å˜åŒ–。 3. å–æ¶ˆè®¢é˜…åŠ é€Ÿåº¦ä¼ æ„Ÿå™¨æ•°æ®çš„å˜åŒ–。 4. 注册并监å¬åŠ é€Ÿåº¦ä¼ æ„Ÿå™¨æ•°æ®çš„å˜åŒ–一次。 示例代ç : ``` //æ¥éª¤1 导包 import sensor from '@ohos.sensor'; export default { onCreate() { //æ¥éª¤2 监å¬ä¼ 感器数æ®å˜åŒ–ï¼Œå¹¶æ³¨å†Œä¼ æ„Ÿå™¨ç±»åž‹ sensor.on(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER, (data) => { console.info("Acceleration data obtained. x: " + data.x + "; y: " + data.y + "; z: " + data.z); }, {'interval':200000000}); //æ¥éª¤3 设置10ç§’åŽå–æ¶ˆè®¢é˜…ä¼ æ„Ÿå™¨æ•°æ® sensor.off(sensor.SensorType.SENSOR_TYPE_ID_LINEAR_ACCELERATION); //æ¥éª¤4 监å¬ä¼ 感器数æ®å˜åŒ–ä¸€æ¬¡ï¼Œå¹¶æ³¨å†Œä¼ æ„Ÿå™¨ç±»åž‹ sensor.once(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER, (data) => { console.info("Acceleration data obtained. x: " + data.x + "; y: " + data.y + "; z: " + data.z); }); } onDestroy() { console.info('AceApplication onDestroy'); } } ``` ## 相关仓<a name="section96071132185310"></a> æ³›SensoræœåŠ¡å系统 **sensors\_sensor** [sensors\_miscdevice](https://gitee.com/openharmony/sensors_miscdevice)