ykd_audio_recorder 0.2.3 copy "ykd_audio_recorder: ^0.2.3" to clipboard
ykd_audio_recorder: ^0.2.3 copied to clipboard

outdated

A new flutter plugin project.

example/lib/main.dart

import 'dart:io';

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:ykd_audio_recorder/ykd_audio_recorder.dart';
import 'package:path_provider/path_provider.dart';

void main() => runApp(MyApp());

enum RecordStatusEnum { Ready, Recording, Pause }

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  RecordStatusEnum _status = RecordStatusEnum.Ready;
  Timer _timer;
  String _fileName;
  double _volumn = 0;
  YkdAudioRecorder _recorder;

  @override
  void initState() {
    _recorder = new YkdAudioRecorder(onInterrupt: (InterruptType type) {
      print('-------------  $type');
    });
    super.initState();
  }

  void startGetVolumn() {
    if (_timer == null) {
      _timer = new Timer.periodic(const Duration(milliseconds: 100),
          (Timer t) async {
        double volumn = await _recorder.getVolumn();
        // print('获取音量 $volumn');
        this.setState(() {
          _volumn = volumn;
        });
      });
    }
  }

  void stopGetVolumn() {
    if (_timer != null) {
      _timer.cancel();
      _timer = null;
    }
  }

  @override
  Widget build(BuildContext context) {
    String text = '';
    // print(_status);
    switch (_status) {
      case RecordStatusEnum.Ready:
        text = '开始';
        break;
      case RecordStatusEnum.Pause:
        text = '继续';
        break;
      case RecordStatusEnum.Recording:
        text = '暂停';
        break;
      default:
    }
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
            child: Column(
          children: <Widget>[
            RaisedButton(
              onPressed: () async {
                if (_status == RecordStatusEnum.Ready) {
                  Directory directory =
                      await getApplicationDocumentsDirectory();
                  _fileName = '${DateTime.now().millisecondsSinceEpoch}.mp4';
                  String path = '${directory.path}/$_fileName';
                  RecordStatus status = await _recorder.start(path: path);
                  if (!status.success) {
                    print('start record error ${status.error}');
                    return;
                  }
                  _status = RecordStatusEnum.Recording;
                  this.startGetVolumn();
                } else if (_status == RecordStatusEnum.Recording) {
                  _recorder.pause();
                  _status = RecordStatusEnum.Pause;
                  this.stopGetVolumn();
                } else if (_status == RecordStatusEnum.Pause) {
                  _recorder.resume();
                  _status = RecordStatusEnum.Recording;
                  this.startGetVolumn();
                }
                this.setState(() {});
              },
              child: Text(text),
            ),
            _status != RecordStatusEnum.Ready
                ? RaisedButton(
                    onPressed: () async {
                      RecordInfo info = await _recorder.stop();
                      print(
                          'record result ${info.duration} ${info.path}, $_fileName');
                      this.stopGetVolumn();
                    },
                    child: Text('结束录音'),
                  )
                : Container(),
            new Text('音量: $_volumn')
          ],
        )),
      ),
    );
  }
}
0
likes
0
pub points
0%
popularity

Publisher

unverified uploader

A new flutter plugin project.

Homepage

License

unknown (LICENSE)

Dependencies

file, flutter, path, path_provider

More

Packages that depend on ykd_audio_recorder