百度语音助手集成到Fragment里面怎么避坑?

其实集成到Fragment才是比较实用的,但是没看到有相关详细的教程,所以本人尝试去挖这个坑看看能不能填上,终于终于还是搞出来了。
首先你还是要进行一些导包修改版本等相关的操作,不懂可以点下这个链接百度语音识别集成到HelloWorld,这个步骤完成后,回到你要集成的Fragment里面,可以看下我的Fragment的布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".VcFragment"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:ignore="UselessParent"><ImageViewandroid:id="@+id/iv_vc"android:layout_width="100dp"android:layout_height="100dp"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_marginEnd="154dp"android:layout_marginBottom="160dp"android:contentDescription="@string/to"android:src="@drawable/ic_mkf" /><TextViewandroid:id="@+id/tv_vcResult"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_alignParentEnd="true"android:layout_centerVertical="true"android:layout_marginTop="163dp"android:layout_marginEnd="0dp"android:text="@string/ress"android:textAlignment="center"android:textColor="@color/colorPrimary"android:textSize="20sp"android:textStyle="bold" /></RelativeLayout></FrameLayout>

逻辑代码如下:

import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.usage.UsageEvents;
import android.content.pm.PackageManager;
import android.os.Bundle;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;import com.baidu.aip.asrwakeup3.core.recog.MyRecognizer;
import com.baidu.aip.asrwakeup3.core.recog.listener.IRecogListener;
import com.baidu.aip.asrwakeup3.core.recog.listener.MessageStatusRecogListener;
import com.baidu.aip.asrwakeup3.core.recog.listener.StatusRecogListener;
import com.baidu.aip.asrwakeup3.core.util.FileUtil;
import com.baidu.speech.EventManager;
import com.baidu.speech.asr.SpeechConstant;import org.json.JSONException;
import org.json.JSONObject;import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;/*** A simple {@link Fragment} subclass.*/
public class VcFragment extends Fragment {public VcFragment() {// Required empty public constructor}private TextView tv_vcResult;//    public EventManager asr;protected MyRecognizer myRecognizer;protected Handler handler;protected String resultTxt = null;@SuppressLint({"ClickableViewAccessibility", "HandlerLeak"})@Overridepublic View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {// Inflate the layout for this fragmentinflater = LayoutInflater.from(getContext());View myview = inflater.inflate(R.layout.fragment_vc, container, false);//建立一个线程来处理信息handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);handleMsg(msg);}};tv_vcResult = myview.findViewById(R.id.tv_vcResult);ImageView iv_vc = myview.findViewById(R.id.iv_vc);iv_vc.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {int action = event.getAction();if (action == MotionEvent.ACTION_DOWN) {tv_vcResult.setText("识别中...");
//                    Toast.makeText(getContext(), "正在识别....", Toast.LENGTH_SHORT).show();start();} else if (action == MotionEvent.ACTION_UP) {stop();}return false;}});initSpeechRecog();initPermission();return myview;}//初始化语音识别private void initSpeechRecog() {IRecogListener listener = new MessageStatusRecogListener(handler);if (myRecognizer == null) {myRecognizer = new MyRecognizer(this.getContext(), listener);}}//开始识别private void start() {final Map<String, Object> params = new LinkedHashMap<String, Object>();params.put(SpeechConstant.ACCEPT_AUDIO_VOLUME, false);params.put(SpeechConstant.PID, 1536);//普通话myRecognizer.start(params);}//停止识别private void stop() {myRecognizer.stop();}//回调事件处理private void handleMsg(Message msg) {if (msg.what == MessageStatusRecogListener.STATUS_FINISHED) {//            String resultTxt = null;try {JSONObject msgObj = new JSONObject(msg.obj.toString());if (msg.arg2 == 1) {String error = msgObj.getString("error");System.out.println("error =>" + error);if ("0".equals(error)) {resultTxt = msgObj.getString("best_result");tv_vcResult.setText(resultTxt);}}} catch (JSONException e) {e.printStackTrace();}}}//释放资源@Overridepublic void onDestroy() {super.onDestroy();if (myRecognizer != null) {myRecognizer.release();//释放资源,不然程序会闪退myRecognizer = null;}}//调用权限private void initPermission() {String[] permissions = {Manifest.permission.RECORD_AUDIO,Manifest.permission.ACCESS_NETWORK_STATE,Manifest.permission.INTERNET,Manifest.permission.READ_PHONE_STATE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.MODIFY_AUDIO_SETTINGS,Manifest.permission.ACCESS_WIFI_STATE,Manifest.permission.CHANGE_WIFI_STATE};ArrayList<String> toApplyList = new ArrayList<>();for (String perm : permissions) {if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(Objects.requireNonNull(getActivity()), perm)) {toApplyList.add(perm);//进入这里代表没有权限}}String[] tmplist = new String[toApplyList.size()];if (!toApplyList.isEmpty()) {ActivityCompat.requestPermissions(getActivity(), toApplyList.toArray(tmplist), 123);}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {// 此处为android 6.0以上动态授权的回调,用户自行实现。}

然后你可以在自己的日志看到识别效果,但是你的TextView一点反应都没,怎么办呢?

首先把Android改成Project,找到以下路径

修改两行代码就可以了,如下图所示:

效果可以看图

百度语音助手怎么集成到自己的Fragment项目里面?(教你怎么避坑)相关推荐

  1. 百度语音助手实现多回合回话的技术分析

    使用自然语言的自动应答技术是当今的一个发展热点,存在很多技术.如何来构建一个相对智能的提供业务服务支撑的自动应答系统?这需要把多种技术结合起来,共同来实现这一系统.我将根据我以前的相关经验,撰写一个系 ...

  2. 百度语音助手电脑版 v3.0 官方版

    百度语音助手电脑版 v3.0 官方版 软件大小:11.9MB 软件语言:简体中文 软件类别:录音录像 软件授权:官方版 应用平台:/Win8/Win7/WinXP 是一款智能语音识别系统.百度语音助手 ...

  3. 语音助手们——功能未动,趣味先行

    像所有曾经火过的概念一样,语音助手的美好前景使得众多中国互联网公司都摩拳擦掌,准备大干一场.从百度.到搜狗,从灵犀,到虫洞.智能360.小I机器人,数得上来的已经有很多家,还未露出水面的不知道有多少家 ...

  4. 中国智能语音助手用户最担心安全和隐私问题

    埃森哲最新调研显示,有77%的受访中国消费者使用智能语音助手,为全球最高(全球平均比例50%).国内用户对于独立智能语音助手的满意度达到了97%,因而对其有着更高的期待,希望更多的家用设备与之实现集成 ...

  5. Linux语音助手——Lewis小精灵(简陋版小度小度)

    最近看一个综艺<向往的生活>被百度的产品小精灵小度所吸引,春招的时候百度来线下宣讲我怎么没举手回答问题拿到这等福利,失手了失手了.本人之前做过一个基于网络通信的Linux聊天室,可能因为做 ...

  6. Flutter学习第十三天,2021最新版超详细Flutter2.0实现百度语音转文字功能,Android和Flutter混合开发?

    Flutter实现百度语音转文字功能 1.新建一个flutter项目,来实现View端. 2.新建android端的module 1.打开flutter里面的Android文件 1.新建一个modul ...

  7. 教Alexa看懂手语,不说话也能控制语音助手

    Alexa.Siri.小度--各种语音助手令人眼花缭乱,但这些设备多是针对能力健全的用户,忽略了听.说能力存在障碍的人群.本文作者敏锐地发现了这一 bug,并训练亚马逊语音助手 Alex 学会识别美式 ...

  8. 百度地图智能语音助手用户量突破3亿:确实方便

    百度地图宣布截至10月1日18:00,百度地图智能语音功能用户量突破3亿.超3亿人喊"小度小度"来解决地图需求问题. 百度地图智能语音助手功能于2017年上线,依托百度大脑语音领先 ...

  9. Android百度语音集成——文字转语音

    项目涉及文字转语音的需求,用Android原生提供的TTS生成的语音太单调,机器声音太明显,故寻求第三方更好的支持,用科大讯飞的语音包收费,百度语音免费而且不限制调用次数,主页鲜明说永久免费的智能语音 ...

最新文章

  1. layui 数据表格内容过长遮挡_word表格技巧:遇到这三种情况,你会处理么?
  2. 如何查看Linux系统下程序运行时使用的库?
  3. .net使用websocket
  4. 跨链(2)跨链技术“分布式私钥控制”
  5. matlab norm向量和矩阵的范数
  6. mysql 存储过程 转义_mysql存储过程中的 sql语句符号问题
  7. java long类型判断_Java中的long类型和Long类型比较大小
  8. Centos源码安装Python3
  9. 主板电源开关接口图解_主板跳线接法示意图,超详细适合DIY新手
  10. MDF文件查看器(SQL MDF Viewer) 1.0 绿色版
  11. Xposed框架未安装解决方法
  12. (七)电量分析 —— 优化耗电
  13. 给小黑升级三星970EVOPlus固态硬盘手记(图文)
  14. python round函数
  15. 关于RSS的聚合---OPML
  16. 泛微OA二次开发环境搭建 ecology二次开发
  17. python计算贷款购房月供、利息
  18. 每个系统都在用的appid、appkey、appsecret都是什么意思?
  19. k8s出现问题导致cpu使用率过高
  20. 如何远程控制别人的无线鼠标

热门文章

  1. mysql 主键 聚集索引_MySQL主键索引和聚焦索引
  2. linux学习笔记 杂记一
  3. c语言中isdigit函数的用法
  4. Spring Cloud与Docker的完美结合,运维可以不用拜菩萨啦
  5. Ubuntu下导入PySpark到Shell和Pycharm中(未整理)
  6. 使用js生成GUID
  7. linux系统进程调度算法实验,操作系统实验三、进程调度算法实验
  8. 零基础学习Linux必会的60个常用命令
  9. 史上最清晰的红黑树讲解(上)
  10. 苹果开发者账号个人、公司、企业账号的申请和区别