Skip to content

Instantly share code, notes, and snippets.

@fabiojansenbr
Created January 27, 2020 11:54
Show Gist options
  • Save fabiojansenbr/112dc5ce43c19cc057905153bb2b8da7 to your computer and use it in GitHub Desktop.
Save fabiojansenbr/112dc5ce43c19cc057905153bb2b8da7 to your computer and use it in GitHub Desktop.
- 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