#flutter #dart #flutter-layout #flutter-dependencies #flutter-test
#flutter #dart #flutter-layout #flutter-зависимости #flutter-тест
Вопрос:
После запуска исходного кода, похоже, ошибок в распознавании речи нет, но он выдает предупреждения о проблемах устаревания. Может ли кто-нибудь, у кого есть какие-либо идеи по этому вопросу, помочь мне? Я понятия не имею, как это решить. Я ломал голову, думая об этом решении, и продолжаю менять плагин, чтобы опробовать все возможные решения. Заранее благодарю вас.
Ниже приведена консоль отладки:
Launching libmain.dart on AOSP on IA Emulator in debug mode...
libmain.dart:1
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
√ Built buildappoutputsflutter-apkapp-debug.apk.
W/FlutterActivityAndFragmentDelegate(23764): A splash screen was provided to Flutter, but this is deprecated. See flutter.dev/go/android-splash-migration for migration steps.
Connecting to VM Service at ws://127.0.0.1:54086/5SFyrXlWPbo=/ws
D/EGL_emulation(23764): eglMakeCurrent: 0xe1005b40: ver 2 0 (tinfo 0xc63ef010)
I/OpenGLRenderer(23764): Davey! duration=7183ms; Flags=1, IntendedVsync=120809744677502, Vsync=120814844677298, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=120814867298760, AnimationStart=120814884416860, PerformTraversalsStart=120814981718460, DrawStart=120816317099660, SyncQueued=120816631755960, SyncStart=120816958353760, IssueDrawCommandsStart=120816979574560, SwapBuffers=120817095741560, FrameCompleted=120817254727060, DequeueBufferDuration=105300000, QueueBufferDuration=5063000,
D/eglCodecCommon(23764): setVertexArrayObject: set vao to 0 (0) 1 0
I/OpenGLRenderer(23764): Davey! duration=935ms; Flags=0, IntendedVsync=120840030058709, Vsync=120840346725363, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=120840356603560, AnimationStart=120840368806860, PerformTraversalsStart=120840729392360, DrawStart=120840794494960, SyncQueued=120840818237460, SyncStart=120840822394960, IssueDrawCommandsStart=120840828390560, SwapBuffers=120840893817960, FrameCompleted=120840970046060, DequeueBufferDuration=12527000, QueueBufferDuration=45393000,
Я использую этот плагин: https://pub.flutter-io.cn/packages/speech_to_text /
Мой код для Android:
import 'package:flutter/material.dart';
import 'package:speech_to_text/speech_recognition_result.dart';
import 'package:speech_to_text/speech_to_text.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
SpeechToText _speechToText = SpeechToText();
bool _speechEnabled = false;
String _lastWords = '';
@override
void initState() {
super.initState();
_initSpeech();
}
/// This has to happen only once per app
void _initSpeech() async {
_speechEnabled = await _speechToText.initialize();
setState(() {});
}
/// Each time to start a speech recognition session
void _startListening() async {
await _speechToText.listen(onResult: _onSpeechResult);
setState(() {});
}
/// Manually stop the active speech recognition session
/// Note that there are also timeouts that each platform enforces
/// and the SpeechToText plugin supports setting timeouts on the
/// listen method.
void _stopListening() async {
await _speechToText.stop();
setState(() {});
}
/// This is the callback that the SpeechToText plugin calls when
/// the platform returns recognized words.
void _onSpeechResult(SpeechRecognitionResult result) {
setState(() {
_lastWords = result.recognizedWords;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Speech Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
padding: EdgeInsets.all(16),
child: Text(
'Recognized words:',
style: TextStyle(fontSize: 20.0),
),
),
Expanded(
child: Container(
padding: EdgeInsets.all(16),
child: Text(
// If listening is active show the recognized words
_speechToText.isListening
? '$_lastWords'
// If listening isn't active but could be tell the user
// how to start it, otherwise indicate that speech
// recognition is not yet ready or not supported on
// the target device
: _speechEnabled
? 'Tap the microphone to start listening...'
: 'Speech not available',
),
),
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed:
// If not yet listening for speech start, otherwise stop
_speechToText.isNotListening ? _startListening : _stopListening,
tooltip: 'Listen',
child: Icon(_speechToText.isNotListening ? Icons.mic_off : Icons.mic),
),
);
}
}
Он подает звуковой сигнал, но когда после этого он не показывает никаких выходных данных. Также в AndroidManifest.xml в папке main и debug у меня есть:
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>
<queries>
<intent>
<action android:name="android.speech.RecognitionService" />
</intent>
</queries>
Комментарии:
1. Я думаю, может быть, проблема в моем ноутбуке bcs, после того, как я подключил свой телефон к flutter vscode, проблем не возникло.