-
Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathREADME.md
104 lines (78 loc) · 2.92 KB
/
README.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
A package to dynamically measure sound input level in React Native applications.
Can be used to help user to adjust microphone sensitivity.
### Installation
Install the npm package and link it to your project:
```
npm i react-native-sound-level --save
```
On *iOS* you need to add a usage description to `Info.plist`:
```
<key>NSMicrophoneUsageDescription</key>
<string>This sample uses the microphone to analyze sound level.</string>
```
On *Android* you need to add a permission to `AndroidManifest.xml`:
```
<uses-permission android:name="android.permission.RECORD_AUDIO" />
```
### Manual installation on iOS
```
In XCode, in the project navigator:
* Right click _Libraries_
* Add Files to _[your project's name]_
* Go to `node_modules/react-native-sound-level`
* Add the `.xcodeproj` file
In XCode, in the project navigator, select your project.
* Add the `libRNSoundLevel.a` from the _soundlevel_ project to your project's _Build Phases ➜ Link Binary With Libraries_
```
### Installation on Ubuntu
1. Add to package.json: `"desktopExternalModules": [ "node_modules/react-native-sound-level/desktop" ]`
2. You may need to make QT's multimedia library accessible for linker
`sudo ln -s $YOUR_QT_DIR/5.9.1/gcc_64/lib/libQt5Multimedia.so /usr/local/lib/libQt5Multimedia.so`
### React Native 0.60+
To make it run correctly on iOS you may need the following:
1. Add `pod 'react-native-sound-level', :podspec => '../node_modules/react-native-sound-level/RNSoundLevel.podspec'` to your `ios/Podfile` file.
2. Unlink the library if linked before (`react-native unlink react-native-sound-level`).
3. Run `pod install` from within your project `ios` directory
### Usage
1. Request permission to access microphone, handle the UI by yourself.
You may use [react-native-permissions](https://www.npmjs.com/package/react-native-permissions) package or simply
[PermissionsAndroid](https://reactnative.dev/docs/permissionsandroid) module.
2. Configure the monitor and start it.
3. Makes sense to stop it when not used.
```ts
import RNSoundLevel from 'react-native-sound-level'
const MONITOR_INTERVAL = 250 // in ms
const requestPermission = async () => {
// request permission to access microphone
// ...
if (success) {
// start monitoring
RNSoundLevel.start()
// you may also specify a monitor interval (default is 250ms)
RNSoundLevel.start(MONITOR_INTERVAL)
// or add even more options
RNSoundLevel.start({
monitorInterval: MONITOR_INTERVAL,
samplingRate: 16000, // default is 22050
})
}
}
useEffect(() => {
RNSoundLevel.onNewFrame = (data) => {
// see "Returned data" section below
console.log('Sound level info', data)
}
return () => {
// don't forget to stop it
RNSoundLevel.stop()
}
}, [])
```
### Returned data
```
{
"id", // frame number
"value", // sound level in decibels, -160 is a silence level
"rawValue" // raw level value, OS-dependent
}
```