<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://smwiki.info/index.php?action=history&amp;feed=atom&amp;title=%ED%94%8C%EB%9F%AC%ED%84%B0%3A%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5</id>
	<title>플러터:마이크 입력 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://smwiki.info/index.php?action=history&amp;feed=atom&amp;title=%ED%94%8C%EB%9F%AC%ED%84%B0%3A%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5"/>
	<link rel="alternate" type="text/html" href="https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;action=history"/>
	<updated>2026-04-26T14:54:07Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;diff=10711&amp;oldid=prev</id>
		<title>Sam: /* 필요한 패키지 */</title>
		<link rel="alternate" type="text/html" href="https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;diff=10711&amp;oldid=prev"/>
		<updated>2025-11-19T07:19:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;필요한 패키지&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;amp;diff=10711&amp;amp;oldid=10710&quot;&gt;차이 보기&lt;/a&gt;</summary>
		<author><name>Sam</name></author>
	</entry>
	<entry>
		<id>https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;diff=10710&amp;oldid=prev</id>
		<title>2025년 11월 19일 (수) 05:48에 Sam님의 편집</title>
		<link rel="alternate" type="text/html" href="https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;diff=10710&amp;oldid=prev"/>
		<updated>2025-11-19T05:48:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;amp;diff=10710&amp;amp;oldid=10696&quot;&gt;차이 보기&lt;/a&gt;</summary>
		<author><name>Sam</name></author>
	</entry>
	<entry>
		<id>https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;diff=10696&amp;oldid=prev</id>
		<title>2025년 11월 17일 (월) 03:02에 Sam님의 편집</title>
		<link rel="alternate" type="text/html" href="https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;diff=10696&amp;oldid=prev"/>
		<updated>2025-11-17T03:02:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;amp;diff=10696&amp;amp;oldid=10695&quot;&gt;차이 보기&lt;/a&gt;</summary>
		<author><name>Sam</name></author>
	</entry>
	<entry>
		<id>https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;diff=10695&amp;oldid=prev</id>
		<title>Sam: 새 문서: {{플러터}}  == 개요 == 기기에서 마이크를 사용하는 법.  == 사전준비 권한 설정 == {| class=&quot;wikitable&quot; |+ !항목 !설명 !비고 |- |안드로이드 |android/app/src/main/AndroidManifest.xml 에 넣는다. |&lt;uses-permission android:name=&quot;android.permission.RECORD_AUDIO&quot;/&gt; |- |아이폰 |ios/Runner/Info.plist에 넣는다. |&lt;key&gt;NSMicrophoneUsageDescription&lt;/key&gt; &lt;string&gt;앱에서 음성 입력을 사용합니다.&lt;/string&gt; |- |패키지 설치 |dependenci...</title>
		<link rel="alternate" type="text/html" href="https://smwiki.info/index.php?title=%ED%94%8C%EB%9F%AC%ED%84%B0:%EB%A7%88%EC%9D%B4%ED%81%AC_%EC%9E%85%EB%A0%A5&amp;diff=10695&amp;oldid=prev"/>
		<updated>2025-11-17T01:47:35Z</updated>

		<summary type="html">&lt;p&gt;새 문서: {{플러터}}  == 개요 == 기기에서 마이크를 사용하는 법.  == 사전준비 권한 설정 == {| class=&amp;quot;wikitable&amp;quot; |+ !항목 !설명 !비고 |- |안드로이드 |android/app/src/main/AndroidManifest.xml 에 넣는다. |&amp;lt;uses-permission android:name=&amp;quot;android.permission.RECORD_AUDIO&amp;quot;/&amp;gt; |- |아이폰 |ios/Runner/Info.plist에 넣는다. |&amp;lt;key&amp;gt;NSMicrophoneUsageDescription&amp;lt;/key&amp;gt; &amp;lt;string&amp;gt;앱에서 음성 입력을 사용합니다.&amp;lt;/string&amp;gt; |- |패키지 설치 |dependenci...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{플러터}}&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
기기에서 마이크를 사용하는 법.&lt;br /&gt;
&lt;br /&gt;
== 사전준비 권한 설정 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!항목&lt;br /&gt;
!설명&lt;br /&gt;
!비고&lt;br /&gt;
|-&lt;br /&gt;
|안드로이드&lt;br /&gt;
|android/app/src/main/AndroidManifest.xml 에 넣는다.&lt;br /&gt;
|&amp;lt;uses-permission android:name=&amp;quot;android.permission.RECORD_AUDIO&amp;quot;/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|아이폰&lt;br /&gt;
|ios/Runner/Info.plist에 넣는다.&lt;br /&gt;
|&amp;lt;key&amp;gt;NSMicrophoneUsageDescription&amp;lt;/key&amp;gt;&lt;br /&gt;
&amp;lt;string&amp;gt;앱에서 음성 입력을 사용합니다.&amp;lt;/string&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|패키지 설치&lt;br /&gt;
|dependencies:&lt;br /&gt;
&lt;br /&gt;
  flutter:&lt;br /&gt;
&lt;br /&gt;
    sdk: flutter&lt;br /&gt;
&lt;br /&gt;
  permission_handler: ^10.5.0&lt;br /&gt;
&lt;br /&gt;
  noise_meter: ^1.1.0&lt;br /&gt;
|noise_meter는 db를 읽는다.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 데시벨 측정 예시 코드 ==&lt;br /&gt;
import &amp;#039;package:flutter/material.dart&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
import &amp;#039;package:permission_handler/permission_handler.dart&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
import &amp;#039;package:noise_meter/noise_meter.dart&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
void main() {&lt;br /&gt;
&lt;br /&gt;
  runApp(const MyApp());&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class MyApp extends StatefulWidget {&lt;br /&gt;
&lt;br /&gt;
  const MyApp({super.key});&lt;br /&gt;
&lt;br /&gt;
  @override&lt;br /&gt;
&lt;br /&gt;
  State&amp;lt;MyApp&amp;gt; createState() =&amp;gt; _MyAppState();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class _MyAppState extends State&amp;lt;MyApp&amp;gt; {&lt;br /&gt;
&lt;br /&gt;
  NoiseMeter? _noiseMeter;&lt;br /&gt;
&lt;br /&gt;
  StreamSubscription&amp;lt;NoiseReading&amp;gt;? _subscription;&lt;br /&gt;
&lt;br /&gt;
  double _decibel = 0;&lt;br /&gt;
&lt;br /&gt;
  @override&lt;br /&gt;
&lt;br /&gt;
  void initState() {&lt;br /&gt;
&lt;br /&gt;
    super.initState();&lt;br /&gt;
&lt;br /&gt;
    _initMicrophone();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Future&amp;lt;void&amp;gt; _initMicrophone() async {&lt;br /&gt;
&lt;br /&gt;
    // 권한 요청&lt;br /&gt;
&lt;br /&gt;
    if (await Permission.microphone.request().isGranted) {&lt;br /&gt;
&lt;br /&gt;
      _noiseMeter = NoiseMeter(onError: (e) {&lt;br /&gt;
&lt;br /&gt;
        print(&amp;quot;Noise meter error: $e&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      _subscription = _noiseMeter!.noiseStream.listen((noise) {&lt;br /&gt;
&lt;br /&gt;
        setState(() {&lt;br /&gt;
&lt;br /&gt;
          _decibel = noise.meanDecibel;&lt;br /&gt;
&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
      });&lt;br /&gt;
&lt;br /&gt;
      _noiseMeter!.start();&lt;br /&gt;
&lt;br /&gt;
    } else {&lt;br /&gt;
&lt;br /&gt;
      print(&amp;quot;마이크 권한 거부됨&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  @override&lt;br /&gt;
&lt;br /&gt;
  void dispose() {&lt;br /&gt;
&lt;br /&gt;
    _subscription?.cancel();&lt;br /&gt;
&lt;br /&gt;
    _noiseMeter?.stop();&lt;br /&gt;
&lt;br /&gt;
    super.dispose();&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  @override&lt;br /&gt;
&lt;br /&gt;
  Widget build(BuildContext context) {&lt;br /&gt;
&lt;br /&gt;
    return MaterialApp(&lt;br /&gt;
&lt;br /&gt;
      home: Scaffold(&lt;br /&gt;
&lt;br /&gt;
        appBar: AppBar(title: const Text(&amp;quot;데시벨 측정기&amp;quot;)),&lt;br /&gt;
&lt;br /&gt;
        body: Center(&lt;br /&gt;
&lt;br /&gt;
          child: Text(&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;${_decibel.toStringAsFixed(1)} dB&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            style: const TextStyle(fontSize: 50),&lt;br /&gt;
&lt;br /&gt;
          ),&lt;br /&gt;
&lt;br /&gt;
        ),&lt;br /&gt;
&lt;br /&gt;
      ),&lt;br /&gt;
&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sam</name></author>
	</entry>
</feed>