Created
January 27, 2020 11:54
-
-
Save fabiojansenbr/112dc5ce43c19cc057905153bb2b8da7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- utilizar o plugin "audio_recorder: ^1.0.1" | |
para gravar o audio, utilizei o plugin audio_recorder que no momento, tem um bug de nome de pasta | |
dentro do diretorio em que é baixado o pub | |
entrar na pasta C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\ | |
renomear android/src/main/java/com/jordanalcaraz/audiorecorder/audio_recorder/ | |
para android/src/main/java/com/jordanalcaraz/audiorecorder/audiorecorder/ (na ultima pasta, remover o _ ) | |
Gravar o audio: | |
importar o pacote: | |
import 'package:audio_recorder/audio_recorder.dart'; | |
método para gravar o audio: | |
_startRecord() async { | |
// local onde ficará gravado o audio | |
// neste caso, armazeno dentro da pasta do aplicativo, e crio uma pasta chamada gravacoes | |
io.Directory appDocDirectory = await getApplicationDocumentsDirectory(); | |
final caminho = appDocDirectory.path; | |
final caminhoFinal = caminho + '/gravacoes/${DateTime.now().second}'; | |
new io.Directory('$caminho/gravacoes').create(recursive: true) | |
// The created directory is returned as a Future. | |
.then((io.Directory directory) { | |
print(directory.path); | |
}); | |
try { | |
await AudioRecorder.start( | |
path: caminhoFinal, audioOutputFormat: AudioOutputFormat.AAC); | |
bool isRecording = await AudioRecorder.isRecording; | |
setState(() { | |
_recording = | |
new Recording(duration: new Duration(), path: caminhoFinal); | |
_isRecording = isRecording; | |
caminhoPlay = caminhoFinal + '.m4a'; | |
}); | |
} catch (e) { | |
print(e); | |
} | |
} | |
parar a gravação: | |
_stop() async { | |
var recording = await AudioRecorder.stop(); | |
print("Stop recording: ${recording.path}"); | |
} | |
-- além disso, você precisa verificar se a aplicação tem permissões de utilizar o microfone e gravar o arquivo localmente no celular: | |
- utilizar o plugin permission_handler: ^4.1.0 | |
E na mesma tela de gravação do audio, checar as permissões (pode clocar no initstate) | |
checaPermissoes() async { | |
final PermissionHandler _permissionHandler = PermissionHandler(); | |
final micPermission = await _permissionHandler | |
.checkPermissionStatus(PermissionGroup.microphone); | |
print('Microfone possui permissão: $micPermission'); | |
if (micPermission != PermissionStatus.granted) { | |
await _permissionHandler.requestPermissions([PermissionGroup.microphone]); | |
} | |
final storagePermission = | |
await _permissionHandler.checkPermissionStatus(PermissionGroup.storage); | |
print('Storage possui permissão: $storagePermission'); | |
if (storagePermission != PermissionStatus.granted) { | |
await _permissionHandler.requestPermissions([PermissionGroup.storage]); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment