You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

57 line
1.2 KiB

  1. import 'dart:async';
  2. import 'dart:typed_data';
  3. import 'package:demo001/xunfei/task_trans.dart';
  4. abstract class ISDK {
  5. //创建翻译任务
  6. ITaskTrans createTransTask(TaskStateChangeEvent onEvent);
  7. }
  8. abstract class ITaskTrans {
  9. int state();
  10. String originalText();
  11. String translateText();
  12. Stream<Uint8List> originalAudio();
  13. Stream<Uint8List> translateAudio();
  14. void addAudioData(Uint8List data);
  15. void endpuish();
  16. }
  17. class Xunfei implements ISDK {
  18. final String appId;
  19. final String apiKey;
  20. final String apiSecret;
  21. //静态变量保存唯一实例
  22. static Xunfei? _instance;
  23. Xunfei._internal({
  24. required this.appId,
  25. required this.apiKey,
  26. required this.apiSecret,
  27. });
  28. //工厂构造函数
  29. factory Xunfei({
  30. required String appId,
  31. required String apiKey,
  32. required String apiSecret,
  33. }) {
  34. _instance ??= Xunfei._internal(
  35. appId: appId,
  36. apiKey: apiKey,
  37. apiSecret: apiSecret,
  38. );
  39. return _instance!;
  40. }
  41. ITaskTrans createTransTask(TaskStateChangeEvent onEvent) {
  42. var task = XunferTaskTrans(
  43. appId: this.appId,
  44. apiKey: this.apiKey,
  45. apiSecret: this.apiSecret,
  46. onEvent: onEvent);
  47. return task;
  48. }
  49. }