{"id":1266,"date":"2021-05-18T01:23:48","date_gmt":"2021-05-17T16:23:48","guid":{"rendered":"http:\/\/blog.box.kr\/?p=1266"},"modified":"2021-05-18T01:23:52","modified_gmt":"2021-05-17T16:23:52","slug":"qr-%ec%bd%94%eb%93%9c-%ec%8a%a4%ec%ba%94qr-code-scan-%ec%b4%88%ea%b0%84%eb%8b%a8-%ec%98%88%ec%a0%9csimple-example","status":"publish","type":"post","link":"https:\/\/blog.box.kr\/?p=1266","title":{"rendered":"QR \ucf54\ub4dc \uc2a4\uce94(QR Code Scan) \ucd08\uac04\ub2e8 \uc608\uc81c(Simple example)"},"content":{"rendered":"\n<p><a href=\"https:\/\/pub.dev\/packages\">https:\/\/pub.dev\/packages<\/a>  \uc5d0\uc11c  qrscan \uac80\uc0c9 <br><br><br><\/p>\n\n\n\n<p id=\"SE-3371ce2f-f58e-4cb1-a868-a05cbddef72d\">AndroidManifest.xml \ud37c\ubbf8\uc158 \ucd94\uac00<\/p>\n\n\n\n<p id=\"SE-557b29ae-de59-4001-a5b7-c59b7dbed557\">\uc704\uce58 : project\/android\/app\/src\/main\/AndroidManifext.xml<\/p>\n\n\n\n<p id=\"SE-c26fbe6f-9e99-45f3-93b1-d0c977cb2bb0\">\uc548\ub4dc\ub85c\uc774\ub4dc\uc758 \uce74\uba54\ub77c\uc640 \uc800\uc7a5\uc18c \uc81c\uc5b4\ub97c \uc704\ud55c \ud37c\ubbf8\uc158\uc744 \ucd94\uac00\ud574 \uc900\ub2e4.<\/p>\n\n\n\n<p id=\"SE-bf531b4c-c7c8-4952-8f21-6a950da1c097\">\uc2e4\uc81c \uc6b0\ub9ac\uac00 \ud14c\uc2a4\ud2b8\ud558\ub294 \ucf54\ub4dc\uc5d0\ub294 \uad73\uc774 \uc800\uc7a5\uc18c \uad00\ub828\uc740 \ud544\uc694 \uc5c6\uc9c0\ub9cc qrscan \ud328\ud0a4\uc9c0 \ub0b4\uc5d0\uc11c \ubaa8\ub450 \uc0ac\uc6a9\ud558\ub2c8 \uc5b4\uca54 \uc218 \uc5c6\ub2e4.<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;uses-permission android:name=\"android.permission.CAMERA\" \/>\r\n&lt;uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"\/>\r\n&lt;uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"\/><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>import 'dart:async';\r\nimport 'package:flutter\/material.dart';\r\nimport 'package:qrscan\/qrscan.dart' as scanner; \/\/qrscan \ud328\ud0a4\uc9c0\ub97c scanner \ubcc4\uce6d\uc73c\ub85c \uc0ac\uc6a9.\r\n\r\nvoid main() {\r\n  runApp(MyApp());\r\n}\r\n\r\nclass MyApp extends StatefulWidget {\r\n  @override\r\n  _MyAppState createState() => _MyAppState();\r\n}\r\n\r\nclass _MyAppState extends State&lt;MyApp> {\r\n  String _output = 'Empty Scan Code';\r\n  @override\r\n  initState() {\r\n    super.initState();    \r\n  }\r\n\r\n  @override\r\n  Widget build(BuildContext context) {\r\n    return MaterialApp(\r\n      home: Scaffold(\r\n        backgroundColor: Colors.grey&#91;300],\r\n        body: Builder(\r\n          builder: (BuildContext context) {\r\n            return Center( \r\n              \/\/\uc815 \uac00\uc6b4\ub370\uc5d0 QR \uc2a4\ucf04\uac12 \ud45c\uc2dc\r\n              child: Text(_output, style: TextStyle(color: Colors.black)),);\r\n          },\r\n        ),\r\n        \/\/\ud50c\ub85c\ud305 \uc561\uc158 \ubc84\ud2bc\uc73c\ub85c qr \uc2a4\uce94 \ud568\uc218 \uc2e4\ud589\r\n        floatingActionButton: FloatingActionButton(\r\n          onPressed: () => _scan(),\r\n          tooltip: 'scan',\r\n          child: const Icon(Icons.camera_alt),\r\n        ),\r\n      ),\r\n    );\r\n  }\r\n  \r\n  \/\/\ube44\ub3d9\uae30 \ud568\uc218     \r\n  Future _scan() async {\r\n    \/\/\uc2a4\uce94 \uc2dc\uc791 - \uc774\ub54c \uc2a4\uce94 \ub420\ub54c\uae4c\uc9c0 blocking\r\n    String barcode = await scanner.scan();\r\n    \/\/\uc2a4\uce94 \uc644\ub8cc\ud558\uba74 _output \uc5d0 \ubb38\uc790\uc5f4 \uc800\uc7a5\ud558\uba74\uc11c \uc0c1\ud0dc \ubcc0\uacbd \uc694\uccad.\r\n    setState(() => _output = barcode);   \r\n  }\r\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/pub.dev\/packages \uc5d0\uc11c qrscan \uac80\uc0c9 AndroidManifest.xml \ud37c\ubbf8\uc158 \ucd94\uac00 \uc704\uce58 : project\/android\/app\/src\/main\/AndroidManifext.xml \uc548\ub4dc\ub85c\uc774\ub4dc\uc758 \uce74\uba54\ub77c\uc640 \uc800\uc7a5\uc18c \uc81c\uc5b4\ub97c \uc704\ud55c \ud37c\ubbf8\uc158\uc744 \ucd94\uac00\ud574 \uc900\ub2e4. \uc2e4\uc81c \uc6b0\ub9ac\uac00 \ud14c\uc2a4\ud2b8\ud558\ub294 \ucf54\ub4dc\uc5d0\ub294 \uad73\uc774 \uc800\uc7a5\uc18c \uad00\ub828\uc740 \ud544\uc694 \uc5c6\uc9c0\ub9cc qrscan \ud328\ud0a4\uc9c0 \ub0b4\uc5d0\uc11c \ubaa8\ub450 \uc0ac\uc6a9\ud558\ub2c8 \uc5b4\uca54 \uc218 \uc5c6\ub2e4.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"ngg_post_thumbnail":0,"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[41],"tags":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5q9Zn-kq","jetpack-related-posts":[{"id":391,"url":"https:\/\/blog.box.kr\/?p=391","url_meta":{"origin":1266,"position":0},"title":"[\ud38c][android] GCM (2) \u2013 \ud074\ub77c\uc774\uc5b8\ud2b8 \ub9cc\ub4e4\uae30","date":"2014-09-15","format":false,"excerpt":"\uc774\uc804 \uae00\uc5d0\uc11c \uc774\uc5b4\uc9d0 \u00a0 Google Play Service \uc5f0\uacb0\ud558\uae30 \uc774\ud074\ub9bd\uc2a4 \u2013 Windows \u2013 Android SDK Manager \ub97c \uc5f0\ub2e4. \ubaa9\ub85d\uc758 \uc81c\uc77c \uc544\ub798\ucabd\uc5d0\u00a0Goole Play Services\u00a0\uc120\ud0dd\ud55c\ub2e4. \uc624\ub978\ucabd \uc544\ub798\uc758 Install \ubc84\ud2bc\uc744 \ub204\ub978\ub2e4. \uc124\uce58\uac00 \ub05d\ub098\uba74 \uc774\ud074\ub9bd\uc2a4\uc758 \ud504\ub85c\uc81d\ud2b8 \ubaa9\ub85d\uc5d0\uc11c \uc624\ub978\ucabd \ud074\ub9ad\ud574\uc11c import \uba54\ub274\ub97c \uc120\ud0dd\ud558\uace0,{sdk}\/extras\/google\/google_play_services\/ \ub97c \uc120\ud0dd\ud55c\ub2e4. \uc791\uc131\ud560 \ud504\ub85c\uc81d\ud2b8\uc758 \uc624\ub978\ucabd \ud074\ub9ad \uba54\ub274 \u2013 properties \u2013 Android \u2013 Library\u2026","rel":"","context":"In &quot;\ucc38\uace0\ub97c \uc704\ud55c \uc800\uc7a5\ubb3c&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":558,"url":"https:\/\/blog.box.kr\/?p=558","url_meta":{"origin":1266,"position":1},"title":"OSX\uc5d0\uc11c GIT \uc11c\ubc84 \uc124\uc815 \ud558\uae30","date":"2015-01-25","format":false,"excerpt":"* Shell \uc5d0\uc11c \uc0ac\uc6a9\uc790 \ucd94\uac00 !! 1. \"sudo dscl . -create \/Users\/username UserShell \u00a0\/bin\/bash\" 2. \"sudo dscl . -create\u00a0\/Users\/username\u00a0RealName \"John Doth\"\" 3. \"sudo dscl . -create\u00a0\/Users\/username\u00a0UniquelID 1001\" 4.\u00a0\"sudo dscl . -create\u00a0\/Users\/username\u00a0PrimaryGroupID\u00a01000\" 5.\u00a0\"sudo dscl . -create\u00a0\/Users\/username\u00a0NFSHomeDirectory \/Local\/Users\/username\" 6.\u00a0\"sudo dscl . -create\u00a0\/Users\/username\u00a0password\" \u00a0 \u00a0<<= \uc554\ud638 \uc785\ub825 * GIT\uc124\uce58 1. \uc0ac\uc6a9\uc790 \"git-admin\" \u00a0\ucd94\uac00\u2026","rel":"","context":"In &quot;\uc77c\uc0c1&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":675,"url":"https:\/\/blog.box.kr\/?p=675","url_meta":{"origin":1266,"position":2},"title":"[Linux] CentOS 7 \/ RHEL 7\uc5d0 redis \uc124\uce58 \ud558\uae30","date":"2015-04-13","format":false,"excerpt":"Project URL : http:\/\/redis.io\/ CentOS 7 and Red Hat Enterprise Linux 7\uc5d0\uc11c Redis\ub97c \uc124\uce58 \ud558\ub294 \ubc29\ubc95 EPEL \uc800\uc7a5\uc18c \ub4f1\ub85d \ud558\uae30 EPEL \uc800\uc7a5\uc18c\ub97c \uba3c\uc800 \ub4f1\ub85d\ud55c\ub2e4. wget -r --no-parent -A 'epel-release-*.rpm' http:\/\/dl.fedoraproject.org\/pub\/epel\/7\/x86_64\/e\/ rpm -Uvh dl.fedoraproject.org\/pub\/epel\/7\/x86_64\/e\/epel-release-*.rpm \/etc\/yum.repos.d\u00a0 \ud558\uc704 \ub514\ub809\ud1a0\ub9ac\uc5d0 \uc544\ub798\uc640 \uac19\uc774 2\uac1c\uc758 epel \uc800\uc7a5\uc18c\uac00 \ub4f1\ub85d\ub41c\ub2e4. 1. epel.repo 2.epel-testing.repo [root@localhost ~]# ls -l \/etc\/yum.repos.d\/\u2026","rel":"","context":"In &quot;\uae30\uc220\uc790\ub8cc&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":107,"url":"https:\/\/blog.box.kr\/?p=107","url_meta":{"origin":1266,"position":3},"title":"\ub9ac\ub205\uc2a4\uc5d0\uc11c Subversion \uc124\uce58 \ubc0f \uc0ac\uc6a9\ud558\uae30","date":"2014-06-13","format":false,"excerpt":"\u00a0 1. Subversion \uc744 \uc124\uce58\ud574\ubcf4\uc790 \uc774\uc7ac\ud64d\ub2d8\uc774 \uc791\uc131\ud558\uc2e0 Subversion \uc0ac\uc6a9\ubc95(http:\/\/www.pyrasis.com\/main\/Subversion-HOWTO)\uc5d0 \ub098\uc628 \ub0b4\uc6a9\uacfc AnNyung Linux 1.2R3\uc5d0 Subversion 1.3.1 \uc124\uce58(http:\/\/blog.naver.com\/nolimit_gc\/90003599559) \ub0b4\uc6a9\uc744 \ucc38\uace0\ud558\uc5ec \ub0b4 \ub9ac\ub205\uc2a4 \uc11c\ubc84\uc5d0 Subversion\uc744 \uc124\uce58\ud560\ub824\uace0 \ud588\ub2e4.\u00a0Subversion\uc744 \uc124\uce58\ud560\ub824\uba74 \uba87\uac00\uc9c0 \uad00\ub828 \ud328\ud0a4\uc9c0\ub97c \uc124\uce58\ud574\uc57c\ud558\ub294\ub370 \uc544\ub798\uc640 \uac19\uc774 \uc758\uc874\uc131 \ubb38\uc81c\ub85c \uc124\uce58\ub97c \ud560 \uc218 \uc5c6\ub294 \uac83\uc774 \uc544\ub2cc\uac00? \ub098\ucc98\ub7fc \ub9ac\ub205\uc2a4 \ucd08\uc790\uac00 \uc774\ub7f0\ubb38\uc81c\ub97c \uae08\ubc29\ud574\uacb0\ud558\ub294 \uac83\uc740 \uac70\uc758 \ubd88\uac00\ub2a5\ud574\ubcf4\uc600\ub2e4. # rpm\u2026","rel":"","context":"In &quot;SVN&quot;","img":{"alt_text":"\u00ec\u0082\u00ac\u00ec\u009a\u00a9\u00ec\u009e\u0090 \u00ec\u0082\u00bd\u00ec\u009e\u0085 \u00ec\u009d\u00b4\u00eb\u00af\u00b8\u00ec\u00a7\u0080","src":"http:\/\/cfile6.uf.tistory.com\/image\/1777E6124ADC2C4E5361A9","width":350,"height":200},"classes":[]},{"id":495,"url":"https:\/\/blog.box.kr\/?p=495","url_meta":{"origin":1266,"position":4},"title":"[\ud38c]\uae43\ud5c8\ube0c,\ud559\uc0dd\uc6a9\ubb34\ub8cc\ubaa8\ub460\uac1c\ubc1c\ub3c4\uad6c\uacf5\uac1c","date":"2014-12-22","format":false,"excerpt":"\uae43\ud5c8\ube0c\uac00 \ud559\uc0dd \ud504\ub85c\uadf8\ub798\uba38\ub97c \uc704\ud55c \ubb34\ub8cc \uac1c\ubc1c\ub3c4\uad6c\ub97c \uacf5\uac1c\ud588\ub2e4. \u2018\ud559\uc0dd\uac1c\ubc1c\uc790\ud329(Student Developer Pack)\u2019\uc774\ub2e4. \uae30\uc874\uc5d0 \uc720\ub8cc \uc11c\ube44\uc2a4\ub97c \ub0b4\ub193\uc558\ub358 \ub2e4\uc591\ud55c \uac1c\ubc1c\ub3c4\uad6c\ub97c \ud55c\uaebc\ubc88\uc5d0 \ubb36\uc5b4 \uc81c\uacf5\ud558\ub294 \ud504\ub85c\uc81d\ud2b8\ub2e4. \uae43\ud5c8\ube0c\ub294 \u2018\uad50\uc721\uc6a9 \uae43\ud5c8\ube0c\u2019\ub97c \uc9c0\ub09c 2\uc6d4 \ub530\ub85c \ub9cc\ub4e4\uc5b4 \ud559\uad50\uc5d0\uc11c \ubb34\ub8cc\ub85c \uae43\ud5c8\ube0c \uacc4\uc815\uc744 \uc774\uc6a9\ud560 \uc788\ub3c4\ub85d \ub3d5\uace0 \uc788\ub2e4. \ub300\ud559\uc5d0 \ucc3e\uc544\uac00 \ud559\uc0dd\ub4e4\uc744 \uc704\ud55c \uc138\ubbf8\ub098\ub3c4 \uc5f4\uace0 \uc788\ub2e4. \uc774\ubc88\uc5d4 \uc678\ubd80 \uc624\ud508\uc18c\uc2a4 \ubc0f \uc778\ud504\ub77c \uc5c5\uccb4\ub4e4\uacfc \ud611\uc5c5\ud588\ub2e4. \uac1c\ubc1c\uc790\ub97c\u2026","rel":"","context":"In &quot;\uae30\uc220\uc790\ub8cc&quot;","img":{"alt_text":"Github_student_Developer_pack_01","src":"https:\/\/i0.wp.com\/www.bloter.net\/wp-content\/uploads\/2014\/10\/Github_student_Developer_pack_01.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1257,"url":"https:\/\/blog.box.kr\/?p=1257","url_meta":{"origin":1266,"position":5},"title":"BLE \uc0ac\uc6a9\ud558\uae30","date":"2021-05-18","format":false,"excerpt":"\ub77c\uc774\ube0c\ub7ec\ub9ac \ucd94\uac00 \ubc0f SCAN \uae30\ub2a5 \uad6c\ud604flutter_ble_libhttps:\/\/pub.dev\/packages\/flutter_ble_libpermission_handlerhttps:\/\/pub.dev\/packages\/permission_handler\ud504\ub85c\uc81d\ud2b8\uc5d0 \uc548\ub4dc\ub85c\uc774\ub4dc SDK \ubc84\uc804\uc774 \ub0ae\uac8c \uc124\uc815\ub418\uc5b4 \uc544\ub798\uc640 \uac19\uc740 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \uc218\uc774\ub2e4 ble_example\\android\\app\\src\\debug\\AndroidManifest.xml Error: uses-sdk:minSdkVersion 16 cannot be smaller than version 18 declared in library [:flutter_ble_lib] E:\\study\\flutter\\ble_example\\build\\flutter_ble_lib\\intermediates\\library_manifest\\debug\\AndroidManifest.xml as the library might be using APIs not available in 16 Suggestion: use a compatible library with a minSdk\u2026","rel":"","context":"In &quot;flutter&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.box.kr\/wp-content\/uploads\/2021\/05\/image.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/1266"}],"collection":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1266"}],"version-history":[{"count":1,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/1266\/revisions"}],"predecessor-version":[{"id":1267,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/1266\/revisions\/1267"}],"wp:attachment":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}