虽然是结束Flutter的百度语音转文字功用,首要仍是经过Android端来结束百度语音转文字功用,然后经过Flutter和Android端来传数据(如下图),来结束Flutter需求的功用。其间ios端也是可https安全问题以结束百度语音转文字的功用,但是由于我的公务员考试电脑是window体系,所以不能用flutter来开发ios,所以我下面的教程首工商银行要是针对Andjava环境变量装备roid端的结束。
准则肯定是先看一下作用呀,实例java面试题为证:
百度语音转汉字的时分一般都会在后面加一个句号。
1.新建一个fluttjava模拟器er项目,来结束View端。
2.新建android端的module
1.翻开flutter里边的Android文件
==找到flutter项目里边的Android文件,然后找到MainActivty,经过https和http的差异android studio,这儿爆红不需求管他,开始build的时分或许会有点慢==。
1.架构图怎样做新建一个module
记住选择Android Library
。
名字自己命名吧,我枸杞取名为asr_plugin,不细说了。
新java言语建成功
3.装备百度语github敞开私库音转文字sdk
1.下载SDK
百度SDK下载地址:ai.架构图怎样做baidu.com/sdk
2.在asr_plugigithub中文官网网页n里边装备SDK
1.找到架构师证书怎样考core文件夹
2.把下图文件放到asr_plugin文件的lib文件中
3.把jniLibs粘贴到你的srcgithub官网文件中
4.装备你的AndroidMainfest权限
<?xml version="1.0" encoding="utf-8"?&g龚俊t;
<manifest xmlns:angithub是干什么的droid="httphttps安全问题://sche枸杞mas.android.com/apk/res/android"
package="com.example.asr_plugin">
<uses-permission android:name="android.permjava编译器ission枸杞.REjava怎样读CORD_AUDIO" />
&lgithub敞开私库t;uses-permission android:namgithub是干什么的e="androi公积金借款d.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:n宫颈癌ame="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE架构图模板_EXTEjava言语RNAL_STORAGE" />google;
<application>
<!-- <service
android:name="com.baidu.spegithub打不开ech.VoiceRecognitionSe架构师证书怎样考rvice"
android:ex架构图怎样做ported="false" />-->
<meta-https和http的差异data
android:name="com.baidu.speech.APP_ID"
an架构d枸杞roid:value="15519387" />
<meta-da架构图怎样做ta
android:name="com.baidu架构是什么意思.speech.API_KEY"
androidjava编译器:value="Ywyh8ErHPQXBSapdQZqVBtdl" />
<meta-data
android:name="com.baidu.speech.SECRET_KE宫颈癌疫苗Y"
android:value="DFPpDWnOGrNGzxfX07D5GgoogleFLryh3d3Nne" />
&架构师薪酬一月多少lt;/applica公积金提取tion>
<https认证;/manifest>
有的同学或许会想把那个APP_ID,API_KEY,SECRET_KEY改为自己的运用,但是我在改为自己的运用的时分,出现javascript了过失码,具体是什么过失,我也忘了,反正是关于我创立运用没有语音转文字这功用,个人提议,假设你不想费事的话,能够直接这些数据,假设你想装备自己的,也能够去尝试一下,能够根据过失码来检查过失文件,检查过失码的网址:https协议ai.baidu.com/ai-doc/SPEE…
5.在flutter的Android文件的build.gradle文件里边加载asr_plugin库
此功用首要把asr_plugin加载到f架构师证书怎样考lutter里边,便利等下进行数据通讯。
还需求一步,记住在
4.建立flutter和Andrjava面试题oid端的桥梁
1.装备flugithub怎样下载文件tter端的MethodChannel
建立一个asr_manager文件,经过MethodChannel架构师薪酬一月多少 来进行通讯。总共有三种通讯办法,咱们这儿是归于办法通讯。
总共有三个办法:开始录音、连续录音、撤消录音。
代码如下:
import 'package:flutter/services.dart';
class AsrManager {
static const MethodChannel _channel = const MethodChannel('aGosr_plugin');
///开始录音
static Future<String> start(https协议{Map params}) async {
return架构师和程序员的差异 await _channel.invokeMethod('start', params ?? {});
}
///连续录音
static Future&github是干什么的lt;String> stop()HTTPS async {
return await _channel.invokeMethod('stop');
}
///撤消录音
stathttps认证ic Future<https域名;String> cancel() async {
return await _channel.i公积金提取nvokeMethod('cancel');
}
}
2.配架构规划备Android端的Metjava游戏hodChannel
这些文件除了AsrPlugin,其他你能够在你下载的那个百度SDK里边找到,但是有一些需求批改的当地。
这些文件你能够自己去下面我的百度网盘处下载
,应该都是适配的:
链接:pan.baidu.com/s/1ODBeSEBf…
提取码:gnkq
关于AsrPlugin文件,需求在Android端装备Flutter的环境:
在build.gradle文件中参加如图中代码:
def localProperties = new Properties()
def localPropertie宫颈癌疫苗sFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { rgithub是干什么的eader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.get架构师和程序员的差异Property('flutter.sdk')
apply from: "$flutterRoot/packages/flutter_togithub直播渠道永久回家ols/gradle/flutter.gradle"
flutter {
source '../..'
}
装备成功之后,咱们就可枸杞以结束Android端能够运用flutter的文件了。
假设你没用装备好这个环境的话,你就不能结束Android端与flutter端的通讯,用下面代码来结束与flutter的start,stop,cancel操作:
代码如下:
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.util.Log;
import an架构图模板droidx.annotationgithub中文官网网页.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
impo架构师和程序员的差异rt java.util.ArrayList;
import java.util.MaGop;
import io.flutter.plugin.commgithub永久回家地址on.BinaryMessenger;
import io.flutter.plugin.common.MethodCall;
import架构图怎样做 io.fgithub打不开lutter.plugin.common.MjavahdxxethodChannel;
public class AsrPlugin implements MethodChannel.MethodCallHandler {
private final static S工商银行tring TAG = "AsrPlugin架构图怎样做";
privgithub直播渠道永久回家ate final Activity activity;
private ResultSgithub打不开tateful resultStateful;
private AsrManager asrManager;
public static void架构师和程序员的差异 registerWith(Activity activity, BinaryMessenger messenger) {
Method公积金提取Channel channel = new MethodChannel(messenger, "asr_plugin");
AsrPlugin instance = new AsrPlugin(java游戏aGitHubctivity);
channel.setMethodCallHandler(instance)Java;
}
public AsrPlugin(Activity activity) {
this.activit架构师y = activity;
}
@Override
public void onMethodCall(MethodCjava模拟器all methodCall架构师证书怎样考, MethjavahdxxodChannel.Result resul架构师需求把握哪些常识t) {
initPermission();
switch (methodCall.method) {
case "start":
resultStateful = ResultStateful.of(result);
start(methodCall, resultStateful);
breakhttps和http的差异;
case "stop":
stop(methodCall架构规划,result);
break;
case "cancel":
cancel(methodCall,result);
break;
default:
result.notImplemen龚俊ted();
}
}
private void start(MethodCall call, ResultStateful result) {
if (activity ==Java null) {
Log.e(TAGitHubG, "Ignored start, cur公务员考试rent activity is null.");
result.error("Ignored start, current activity is null.", null, nuJavall);
retGitHuburn;
}
if (工商银行getAsrManager() != null) {
getAsrMan架构师ager().start(call.arguments instanceof Map ? (Map) call.arguments : null);
}架构图怎样做word else {
Log.e(架构规划TAG, "Ignored start架构师和程序员的差异, current getAsrManager is null.");
result.error("Ignored start, currentgithub中文官网网页 getAsrManager is null.", null, null);
}
}
private void stop(Mejava编译器thodCall call, MethodChannel.Rejavascriptsult result) {
if (asrManager != null) {
asrManager.stop();
}
}
private void公积金借款 cancel(MethodCall call, MethodChannel.Result resultjava游戏) {
if (asrManager != null) {
asrManager.cancel(https和http的差异);
}
}
@Nullable
private AsrManager getAsrManager() {https安全问题
ifjava编译器 (asrManager == null) {
if (activigooglety != null && !activity.isFgithub打不开inishing()) {
asrManaghttps协议er = new AsrManahttps安全问题ger(activityjavascript, onAsrListener);
}
}
return asrManagjava编译器er;
}
/**
* android 6.0 以上需求动态央求权限
*/
private void initPermission() {
String permissions[] = {Manifest.permission.RECORD_AUDIO,
Manif枸杞est.permission.ACCESS_NETWORK_STATE,
Manifest.permission.INTERNET,
ManGoifest.permjava模拟器ission.READ_PHONE_STATE,
Manifes宫颈癌疫苗t.permission.WRIgithub敞开私库TE_EXTERNAL_STORAGE
};
ArrayList<String> toA宫颈癌疫苗pplyList = new Arrjava言语ayList<String>();
for (String perm :permissiojava编译器n架构师需求把握哪些常识s){
if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelf架构是什么意思Permission(activity, perm)) {
toApplyList.add(perm);
//进入到这儿代表没有权限.
}
}
String tmpList[] = new String[toApplyList.sigithub是干什么的ze()];
if (!toApplyList.isEmpty()){
ActivityCompat.requestPermissions(activity, toApplyList.toArray(tmpList), 123);
}
}
private OnAsrListener onAsrListener = new OnAsrListener() {
@Override
public void onAsrReady架构师和程序员的差异() {
}
@Overrjava怎样读ide
public void onAsrBegin() {
}
@Override
public void onAsrEnd() {
}
@Ojava模拟器verride
public void onAsgithub中文官网网页rPartialResult(String[] resujava面试题lts, RecogResult recogResult) {
}
@Override
public void onAsrOnlineNluResult(String nluResult) {
}
@Override
public void onAsrFinalResult(String[] results, Recgithub敞开私库ogResult recogResult) {
if (resultStateful != nulgithub中文社区l) {架构师需求把握哪些常识
resultStateful.success(results[0]);
}
}
@Override
public void onAsrFinish(RecogResult recogResugithub怎样下载文件lgithub打不开t) {
}
@Override
public void onAsrFinishEr架构师和程序员的差异ror(int errorCode, int subErrorCode, String descMessage, RecogResult recogResult) {
if (resultStateful != null) {
resultStateful架构师证书怎样考.error(descMessage, null, null);
}
}
@Override
public void onAs架构是什么意思rLongFinish() {
}
@Overrijava游戏de
p宫颈癌疫苗ublic void onAsrVolume(架构师证书怎样考int volumePercent, int volume) {
}
@Override
public void onAsrAudio(byte[] data, int offset, int length) {
}
@Override
public void onAsrExit() {
}
@Override
public void onOfflineLoaded() {
}
@Override
p公务员考试ublic void onOfflineUnLoaded() {
}
};
}
3.在flutter的Android文件中装备打包环境
首要为了避免环境冲突而导致功用不GitHub成功,装备如图所示:
ndk宫颈癌 {
abiFilters "armeabi-v7agithub是干什么的","arm64-v8a","x86_64","x86" /*只打包flutter所支撑的架构,flutter没有armeabi架构的so,加x86的原因是为了能够兼容模拟器 abiFilters架构图怎样做 "armeabi-v7a" release 时打"armeabi公积金借款-v7包 */
}
packagingOptions {
/* 保证app与asrgithub是干什么的_plugin都依靠的libflutter.so libapp.so merge时不冲突@https://github.com/card-io/card.io-Android-SDK/issues/186#issuecommengithub怎样下载文件t-427552552 */
pickFirst 'lib/x86_64/libflutter.so'
pickFirst 'lib/x86_64/libapp.so'
pickFirst 'lib/x86/libflutter.s架构师证书怎样考o'
pickFirst 'lib/arm64-v8a/lijava根底常识点bflutter.so'
pickFirst 'lgithub中文官网网页ib/arm64-v8a/libapp.sjavahdxxo'
pickFirst 'lib/armeabi-v7a/libapp.so'
}
5.注册pl架构图怎样做wordugin,结束通github敞开私库讯功用
首要是在flutter的工商银行android文件夹中调用咱们上面建立的android的module里边通讯文件AsrPlugin,然后用来通讯github是干什么的数据通讯架构师,达到我架构们所需求的作用。
import android.os.Bundle;
import androidx.annotation.NonNull;
import com.example.asr_plugin.AsrPlugin;
import io.架构师需求把握哪些常识flutter.embedding.android.FlutterActivgithub中文官网网页ity;
im架构师薪酬一月多少port io.flu架构师薪酬一月多少tter.embedding.engine.FlutterEngine;
import io.架构师薪酬一月多少flutter.plugins.Genegithub怎样下载文件ratedPluginRegisgithub打不开trant;
public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(@NonNull FlutterEnginejava言语 flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
//flutter sdk >= v1.17.0 时运用下面办法注册自定义plugin
AsrPlugin.registerWi枸杞th(this, flutterEngine.getDartExecutor().getBinaryMessenger());
}
@Override
protected void onCreate(Bundle savedInstanceState )java怎样读 {
super.onCreate(savedInstanceState);
}
}
6.终究,编架构师薪酬一月多少写一个dart界面来展现作用
import 'package:flutter/material.dart';
import 'asr_manager.dart';
void main(){
runApp(MaterialApp(
home: SpeakPage(),
));
}
///语音辨认
class SpeakPage extends StatefulWidget {
@override
_SpGoeakPageState createState() => _SpeakPageState();
}
class _github直播渠道永久回家SpeakPag架构师需求把握哪些常识eState extends State<SpeakPage>
with SingleTickerProviderStateMixin {
String speakTips = '长按说话';
Strihttps安全问题ng speakResult = '';
String result=java面试题'故宫门票n北京一日游n迪士尼乐园';
Animation<double> animation;
AnimationController controller;
@override
void initState() {
controller = AnimationController(
vsync: this, duration: Duration(milliseconds: 1000));
animation = CurvedAnimation(parent: controljava面试题ler, curve: Curves.easeIn)
..addStatusListener((status) {GitHub
if (stagithub中文官网网页tus == Animatio公积金借款nStatus.completed) {
contrgithub中文官网网页oller.reverse架构师证书怎样考();
} else if (status == AnimationStatus.dismissed) {
controller.forward();
}
});
super.initState();
}
@ogithub直播渠道永久回家verride
void dispose() {
control架构师证书怎样考ler.dispose();
super.dispose();
}
@override
Widget build(Build架构图怎样做wordContext context) {
return Scaffold(
body: Container(
padding: EdgeInsets.all(30),
child: Center(
chgithub官网ild: Column(
mjava根底常识点ainJavaAxisAlhttps安全问题ignment: MainAxisAlignment.spaceBetween,
children: <Wid架构图怎样做wordget>[_topItem(), _bottomItem(架构师和程序员的差异)],
),
),
),
);
}
_speakStart() {
controller.forward();
setStatejava面试题(() {
speakTips = '- 辨认中 -';
});
AsrManager.start().then((text) {
if (text != null && text.length > 0) {
setState(() {HTTPS
speakRe架构规划sult = text;java怎样读
result=speakResulgithub中文官网网页t;
});
/*Navigator.pop(context);
Navigator.push(context,MaterialPageRoute(builder:工商银行 (context)=> SearchPage(
keyword: speakResult,
)));*/
print(HTTPS"过失" + text);宫颈癌疫苗
}
}).catchErrorjava面试题((e) {
print("----------123" + e.toString());
});
}
_speakStop()github是干什么的 {
setState(() {
speakTips = '长按说话';
});
controller.reset()架构图怎样做word;
controller.stop();
AsrManager.stop();
}
_topItem() {github官网
returhttps和http的差异n Column(
children: <Widgjava怎样读et>[
Padd架构规划ing(
padding架构是什么意思: EdgeInsets.fromLTRB(0, 30, 0, 30),
child: Text('你能够这样说',
style: TextStyle(fontSize: 16, color: Colors.blagithub怎样下载文件ck54))),
Text(result,
textAlig架构图怎样做n: TextAlign.cengithub直播渠道永久回家ter,
stygithub中文官网网页le: TextStyle(
fontSize: 15公积金提取,
colorgithub中文官网网页: Colors.grey,
)),
Pgithub是干什么的adding(
padding: EdgeInsets.all(20),架构师
child: Text(
speakResulgithub下载t,
style: TextStyle(color: Colors.blue),
),
)java游戏
],
);
}
_bottomItem() {
return FractionallgoogleySizedBoJavax(
wgithub下载idthFactor: 1,
childhttps协议: Stack(
cgooglehildren: <Widget>架构师薪酬一月多少;[
GestureDetector(
onTapDown: (e) {
_speakStart();
},
onTapUgithub下载p: (e)github敞开私库 {
_sjava言语peakjavahdxxStop();
},
onTapCancel: () {github永久回家地址
_speakStop();
},
child: Cent架构师需求把握哪些常识er(
chjava模拟器ild: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.all(10),
chilhttps安全问题d: Text(
speakTips,
style: TextStyle(color: Colors.blue, fontSize: 1github打不开2),
),
),
Stack(
children: <Widget>[
Container(
//占坑,避免动画履github直播渠道永久回家行进程中导致父布局巨细变得
height: MIC_SIZE,
width: MIC_SIZE,github中文社区
),
Center(
chigithub打不开ld: AnimatedMic(
animatiogithub中文社区n: animatio公积金njava怎样读,
),
)
],
)
],
),
),
),
Positioned(
righ架构图怎样做wordt: 0,
bottom: 20,
child: GestureDetector(
onTap: () {
Navigator.pop(context);
},
chi架构师证书怎样考ld: Icon(
Icons.close,github下载
size: 30,
color: Cologithub怎样下载文件rs.grey,
),
),
)
],
),
);
}
}
const double MIC_SIZE = 80;
clgithub打不开ass AnimatedMic extendsjava环境变量装备 AnimatedWidget {
shttps认证tatic final _opacityTween = Tween<double>(begin: 1, end: 0.5);
static final _sizeTween = Tween<double>(begin: MIC_SIZE, end: MIC_SIZE - 20);公积金提取
Anima枸杞tedMic({Key key, Animation<douGitHubble> animation})
: super(key: key, listenable: anima枸杞tion);
@overridgithub官网e
Widget build(BuildContext context) {
final Animation<doub架构师和程序员的差异le> animat龚俊ion =Go listenable;
retur宫颈癌n Opacity(
opjava模拟器acity: _opacityTween.evalu宫颈癌ate(animation),
child: Container(
height: _sizeTween.evaluate(animation),
width: _sizeTwee宫颈癌n.evaluagithub中文社区te(animation),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(MIC_SIZE / 2),
),
child:javahdxx Icon(
Icons.mic,
color: Colors.white,
size: 30,
),
),
);
}
}
进程或许究竟多,java面试题我或许有也许多没用考GitHub虑的当地哦,假设遇到问题能够提出来,这个功用的结束首要来自我学习flutter视频的那个教师,教师博客地址:blog.csdn.net/fengyuzheng…