{"id":1803,"date":"2020-03-30T02:24:00","date_gmt":"2020-03-29T17:24:00","guid":{"rendered":"https:\/\/www.itchefblog.com\/?p=1803"},"modified":"2021-04-22T02:48:56","modified_gmt":"2021-04-21T17:48:56","slug":"android-sensor-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/www.itchefblog.com\/?p=1803","title":{"rendered":"Android Sensor \uc0ac\uc6a9\ud558\uae30"},"content":{"rendered":"\n<p>\uc548\ub4dc\ub85c\uc774\ub4dc\uac00 \uc81c\uacf5\ud558\ub294 \uc13c\uc11c \u2192 \uc624\uc900\uc11d\uc758 \uc548\ub4dc\ub85c\uc774\ub4dc \uc0dd\uc874\ucf54\ub529 \ucc45 234\ud398\uc774\uc9c0<\/p>\n\n\n\n<p>\uc13c\uc11c\ub294 \uacc4\uc18d \uc0ac\uc6a9\uc2dc \ubc30\ud130\ub9ac \uc18c\ubaa8\uac00 \ub9ce\uae30\uc5d0 \uc571\uc744 \uc0ac\uc6a9\ud560 \ub54c\ub9cc \ub3d9\uc791\ud558\ub3c4\ub85d \ucc98\ub9ac\ud574\uc57c \ud55c\ub2e4.<br>\uc774\ub97c \uc704\ud574 onResume() \uc0c1\ud0dc\uc5d0\uc11c \uc13c\uc11c\ub97c \ub4f1\ub85d\ud558\uace0 onPause()\uc5d0\uc11c \ud574\uc81c\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\/\/onCreate() \uc704\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc774 sensorManager\uc744 \uc120\uc5b8\ud55c\ub2e4.\n\/\/\uc9c0\uc5f0\ub41c \ucd08\uae30\ud654\ub97c \uc774\uc6a9\ud558\uc5ec sensorManager \ubcc0\uc218\ub97c \ucc98\uc74c \uc0ac\uc6a9\ud560 \ub54c\n\/\/getSystemService()\uba54\uc11c\ub4dc\ub85c SensorManager \uac1d\uccb4\ub97c \uc5bb\ub294\ub2e4.\nprivate val sensorManager by lazy {\n    getSystemService(Context.SENSOR_SERVICE) as SensorManager\n}\n\n\/\/onResume()\uc744 override\ud55c\ub2e4.\noverride fun onResume() {\n    super.onResume()\n    sensorManager.registerListener(this,\n        sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),\n        SensorManager.SENSOR_DELAY_NORMAL)\n}\n\n\/\/registerListener\uba54\uc11c\ub4dc\ub85c \uc0ac\uc6a9\ud560 \uc13c\uc11c\ub97c \ub4f1\ub85d\ud55c\ub2e4.\n\/\/\uccab \ubc88\uc9f8 \uc778\uc790\ub294 \uc13c\uc11c \uac12\uc744 \ubc1b\uc744 SensorEventListener\uc774\ub2e4.\n\/\/\uc5ec\uae30\uc11c\ub294 this\ub97c \uc774\uc6a9\ud558\uc5ec \uc561\ud2f0\ube44\ud2f0\uc5d0\uc11c \uc13c\uc11c\uac12\uc744 \ubc1b\ub3c4\ub85d \ud55c\ub2e4.\n\/\/\uadf8 \ub2e4\uc74c getDefaultSensor() \uba54\uc11c\ub4dc\ub85c \uc0ac\uc6a9\ud560 \uc13c\uc11c \uc885\ub958\ub97c \uc9c0\uc815\ud55c\ub2e4.\n\/\/\uc5ec\uae30\uc11c\ub294 Sensor \ud074\ub798\uc2a4\uc5d0 \uc0c1\uc218\ub85c \uc815\uc758\ub41c \uac00\uc18d\ub3c4 \uc13c\uc11c\ub97c \uc9c0\uc815\ud588\ub2e4.\n\/\/\uc138 \ubc88\uc9f8 \uc778\uc790\ub294 \uc13c\uc11c\uac12\uc744 \uc5bc\ub9c8\ub098 \uc790\uc8fc \ubc1b\uc744\uc9c0\ub97c \uc9c0\uc815\ud55c\ub2e4.\n\/\/SensoeManager \ud074\ub798\uc2a4\uc5d0 \uc815\uc758\ub41c \uc0c1\uc218 \uc911 \ud558\ub098\ub97c \uc120\ud0dd\ud55c\ub2e4.\n\/\/ - SENSOR_DELAY_FASTEST : \uac00\ub2a5\ud55c \uac00\uc7a5 \uc790\uc8fc \uc13c\uc11c\uac12\uc744 \uc5bb\ub294\ub2e4.\n\/\/ - SENSOR_DELAY_GAME : \uac8c\uc784\uc5d0 \uc801\ud569\ud55c \uc815\ub3c4\ub85c \uc13c\uc11c\uac12\uc744 \uc5bb\ub294\ub2e4.\n\/\/ - SENSOR_DELAY_NORMAL : \ud654\uba74 \ubc29\ud5a5\uc774 \uc804\ud658\ub420 \ub54c \uc801\ud569\ud55c \uc815\ub3c4\ub85c \uc13c\uc11c\uac12\uc744 \uc5bb\ub294\ub2e4.\n\/\/ - SENSOR_DELAY_UI : \uc0ac\uc6a9\uc790 \uc778\ud130\ud398\uc774\uc2a4\ub97c \ud45c\uc2dc\ud558\uae30\uc5d0 \uc801\ud569\ud55c \uc815\ub3c4\ub85c \uc13c\uc11c\uac12\uc744 \uc5bb\ub294\ub2e4.\n\n\/\/\uadf8\ub9ac\uace0 \ub09c \ud6c4 MainActivity\uac00 SensorEventListener\uc744 \uad6c\ud615\ud558\ub3c4\ub85d \ucd94\uac00\ud55c\ub2e4.\nclass MainActivity : AppCompatActivity(), SensorEventListener\n\/\/\uc774\ub807\uac8c... \uadf8\ub9ac\uace0 onAccuracyChanged(), onSensorChanged()\u00a0\uba54\uc11c\ub4dc\ub97c \uad6c\ud604\ud55c\ub2e4.\n\noverride fun onAccuracyChanged(p0: Sensor?, p1: Int) {\n    TODO(&quot;not implemented&quot;) \/\/To change body of created functions use File | Settings | File Templates.\n}\n\noverride fun onSensorChanged(event: SensorEvent?) {\n    \/\/\uc13c\uc11c\uac12\uc774 \ubcc0\uacbd\ub418\uba74 \ud638\ucd9c\ub428\n    \/\/values[0] : x\ucd95 \uac12 : \uc704\ub85c \uae30\uc6b8\uc774\uba74 -10~0, \uc544\ub798\ub85c \uae30\uc6b8\uc774\uba74 0~10\n    \/\/values[1] : y\ucd95 \uac12 : \uc67c\ucabd\uc73c\ub85c \uae30\uc6b8\uc774\uba74 -10~0, \uc624\ub978\ucabd\uc73c\ub85c \uae30\uc6b8\uc774\uba74 0~10\n    \/\/values[2] : z\ucd95 \uac12 : \ubbf8\uc0ac\uc6a9\n    event?.let {\n        Log.d(&quot;MainActivity&quot;, &quot;onSensorChanged: x :&quot; + &quot; ${event.values[0]}, y : ${event.values[1]}, z : ${event.values[2]}&quot;)\n    }\n}\n\/\/onAccuracyChanged()\ub294 \uc13c\uc11c \uc815\ubc00\ub3c4\uac00 \ubcc0\uacbd\ub418\uba74 \ud638\ucd9c\ub41c\ub2e4.\n\/\/onSensorChanged()\ub294 \uc13c\uc11c\uac12\uc774 \ubcc0\uacbd\ub418\uba74 \ud638\ucd9c\ub41c\ub2e4.\n\n\/\/\uc624\ubc84\ub77c\uc774\ub4dc \uc2dc \uc778\uc790\uac12\uc774 event\uac00 \uc544\ub2cc p0\ucc98\ub7fc \uc758\ubbf8 \uc5c6\ub294 \uc774\ub984\uc73c\ub85c \uc0dd\uc131\ub420 \ub54c\ub294 compileSkdVersion\uacfc\n\/\/\ub9de\ub294 SDK\uc758 \uc18c\uc2a4\ub97c \ub0b4\ub824\ubc1b\uc73c\uba74 \ub41c\ub2e4.\n\/\/\ubaa8\ub4c8 \uc218\uc900\uc758 build.gradel\nandroid {\n\tcompileSdkVersion 27\n}\n\n\/\/\uc561\ud2f0\ube44\ud2f0\uac00 \ub3d9\uc791 \uc911\uc77c \ub54c\ub9cc \uc13c\uc11c\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \ud654\uba74\uc774 \uaebc\uc9c0\uae30 \uc9c1\uc804\uc778 onPause() \uba54\uc11c\ub4dc\uc5d0\uc11c \uc13c\uc11c\ub97c\n\/\/\ud574\uc81c\ud55c\ub2e4.\n\/\/unregisterListener() \uba54\uc11c\ub4dc\ub85c \uc13c\uc11c \uc0ac\uc6a9\uc744 \ud574\uc81c\ud560 \uc218 \uc788\uc73c\uba70 \uc778\uc790\ub85c SensorEventListener\n\/\/\uc744 \uc0ac\uc6a9\ud55c\ub2e4. MainActivity \ud074\ub798\uc2a4\uc5d0\uc11c \uc774 \uac1d\uccb4\ub97c \uad6c\ud604\uc911\uc774\ubbc0\ub85c this\ub97c \uc9c0\uc815\ud55c\ub2e4.\noverride fun onPause() {\n    super.onPause()\n    sensorManager.unregisterListener(this)\n}\n\n\/\/\uc77c\ubc18\uc801\uc73c\ub85c \uc13c\uc11c \ud504\ub808\uc784\uc6cc\ud06c\uc5d0\uc11c \uc13c\uc11c\uac12\uc744 \ub098\ud0c0\ub0b4\ub294\ub370 x, y, z \ud45c\uc900 3\ucd95 \uc88c\ud45c\uacc4\ub97c \uc0ac\uc6a9\ud55c\ub2e4.\n\/\/\uae30\uae30\ub97c \uc815\uba74\uc73c\ub85c \ubd24\uc744 \ub54c x\ucd95\uc740 \uc218\ud3c9\uc774\uba70 \uc624\ub978\ucabd\uc744 \uac00\ub974\ud0b4\n\/\/y\ucd95\uc740 \uc218\uc9c1\uc774\uba70 \uc704\ucabd\uc744 \uac00\ub9ac\ud0a4\uace0 z\ucd95\uc740 \ud654\uba74\uc758 \ubc14\uae65\ucabd\uc744 \ud5a5\ud55c\ub2e4.\n\/\/\uc774 \uc88c\ud45c\ub4e4\uc740 \ub2e4\uc74c \uc13c\uc11c\ub4e4\uc5d0\uc11c \uc0ac\uc6a9\ud55c\ub2e4.\n\/\/ - \uac00\uc18d\ub3c4 \uc13c\uc11c\n\/\/ - \uc911\ub825 \uc13c\uc11c\n\/\/ - \uc790\uc774\ub85c \uc2a4\ucf54\ud504\n\/\/ - \uc120\ud615 \uac00\uc18d\ub3c4 \uc13c\uc11c\n\/\/ - \uc790\uae30\uc7a5 \uc13c\uc11c\n\n\/\/\uc13c\uc11c\ub294 SensorEvent\uac1d\uccb4\ub85c \uac12\uc744 \ub118\uaca8\uc900\ub2e4.\n\/\/SensorEvenr.values[] \ubc30\uc5f4 \uac1d\uccb4\uc5d0 \uc13c\uc11c\uac12\uc774 \ub2f4\uaca8\uc788\ub530. \uac00\uc18d\ub3c4 \uc13c\uc11c\ub97c \uc0ac\uc6a9 \uc2dc \ub2e4\uc74c\uacfc \uac19\uc774 \uac12\uc744\n\/\/\uc5bb\uc744 \uc218 \uc788\ub2e4.\n\n\/\/SensorEvent.values[0] : x\ucd95 \uac12\n\/\/SensorEvent.values[1] : y\ucd95 \uac12\n\/\/SensorEvent.values[2] : z\ucd95 \uac12\n\/\/values[0] : x\ucd95 \uac12 : \uc704\ub85c \uae30\uc6b8\uc774\uba74 -10~0, \uc544\ub798\ub85c \uae30\uc6b8\uc774\uba74 0~10\n\/\/values[1] : y\ucd95 \uac12 : \uc67c\ucabd\uc73c\ub85c \uae30\uc6b8\uc774\uba74 -10~0, \uc624\ub978\ucabd\uc73c\ub85c \uae30\uc6b8\uc774\uba74 0~10\n\/\/values[2] : z\ucd95 \uac12 : \ubbf8\uc0ac\uc6a9\n\n<\/pre>","protected":false},"excerpt":{"rendered":"<p>\uc548\ub4dc\ub85c\uc774\ub4dc\uac00 \uc81c\uacf5\ud558\ub294 \uc13c\uc11c \u2192 \uc624\uc900\uc11d\uc758 \uc548\ub4dc\ub85c\uc774\ub4dc \uc0dd\uc874\ucf54\ub529 \ucc45 234\ud398\uc774\uc9c0 \uc13c\uc11c\ub294 \uacc4\uc18d \uc0ac\uc6a9\uc2dc \ubc30\ud130\ub9ac \uc18c\ubaa8\uac00 \ub9ce\uae30\uc5d0 \uc571\uc744 \uc0ac\uc6a9\ud560 \ub54c\ub9cc \ub3d9\uc791\ud558\ub3c4\ub85d \ucc98\ub9ac\ud574\uc57c \ud55c\ub2e4.\uc774\ub97c \uc704\ud574 onResume() \uc0c1\ud0dc\uc5d0\uc11c \uc13c\uc11c\ub97c \ub4f1\ub85d\ud558\uace0 onPause()\uc5d0\uc11c \ud574\uc81c\ud574\uc57c \ud55c\ub2e4.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[349,372,7,4],"tags":[],"_links":{"self":[{"href":"https:\/\/www.itchefblog.com\/index.php?rest_route=\/wp\/v2\/posts\/1803"}],"collection":[{"href":"https:\/\/www.itchefblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itchefblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itchefblog.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itchefblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1803"}],"version-history":[{"count":1,"href":"https:\/\/www.itchefblog.com\/index.php?rest_route=\/wp\/v2\/posts\/1803\/revisions"}],"predecessor-version":[{"id":1804,"href":"https:\/\/www.itchefblog.com\/index.php?rest_route=\/wp\/v2\/posts\/1803\/revisions\/1804"}],"wp:attachment":[{"href":"https:\/\/www.itchefblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itchefblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itchefblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}