android apk内语音控制

最近的音频播放项目要求应用内支持语音控制

用的是讯飞的,大概整理一下作为笔记:

首先在lib目录下引入:XiriScene.jar和XiriFeedback.jar

然后在bulid.gradle文件中加入:

implementation files('libs\\XiriScene.jar')
implementation files('libs\\XiriFeedback.jar')

接下来是代码:

1.XiriISceneListener.java
package com.mychtech.himalayajs.service;

import android.content.Intent;


public interface XiriISceneListener {
    String onQuery();

    void onExecute(Intent var1);
}
2.XiriManager.java
package com.mychtech.himalayajs.service;

import android.content.Context;
import android.content.Intent;
import android.util.Log;

import com.iflytek.xiri.Feedback;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class XiriManager implements XiriISceneListener {
    private static XiriManager mInstance = null;
    private XiriScene mScene;
    private Feedback mFeedback;
    private String mSceneJson;
    private Context mContext = null;
    private IXiriManager mIXiriManager = null;

    public static XiriManager getInstance() {
        synchronized (XiriManager.class) {
            if (mInstance == null) {
                mInstance = new XiriManager();
            }
        }
        return mInstance;
    }

    public void onCreate(Context context, IXiriManager iXiriManager) {
        mIXiriManager = iXiriManager;
        mContext = context;
        mScene = new XiriScene(context);
        mFeedback = new Feedback(context);
        mScene.init(this);
        Log.i("XiriManager", "XiriManager add XiriManager oncreate....");
    }

    public void onResume() {
        //初始化Scene,在界面显示的时候才可调用
        mScene.init(this);
        Log.i("XiriManager", "XiriManager add XiriManager onResume....");
    }
    public void onPause() {
        //释放Scene,在界面消失的时候调用
        mScene.release();
        Log.i("XiriManager", "XiriManager add XiriManager onPause....");
    }

    @Override
    public String onQuery() {
        return regiestScene();
    }

    @Override
    public void onExecute(Intent intent) {
        mFeedback.begin(intent);
        //判断是否有注册的场景
        Log.i("XiriManager", "XiriManager add _scene = " + intent.hasExtra("_scene"));
        if (intent.hasExtra("_scene") && intent.getStringExtra("_scene")
                .equals("com.mychtech.himalayajs.activity.AudioDetailActivity")) {
            if (intent.hasExtra("_command")) {    //需注意,此处是_command,不是场景注册时候的_commands,千万别搞错了!
                String commands = intent.getStringExtra("_command");
                Log.i("XiriManager", "XiriManager add commands:" + commands);
                JSONObject params = new JSONObject();
                if ("key1".equals(commands)) {
                    //key1--> 固定命令(打开,退出)
                    mFeedback.feedback("打开", Feedback.SILENCE);
                    if(mIXiriManager != null) {
                        mIXiriManager.setXiriToJs("打开", "", params.toString());
                    }
                } else if ("key2".equals(commands)) {
                    //key2--> 预定于语义$P(_PLAY)
                    String action = intent.getStringExtra("_action");
                    Log.i("XiriManager", "onExecute___key2__action: "+action);
                    if("SEEK".equals(action)) {
                        int position = intent.getIntExtra("position", -1);
                        try {
                            params.put("position", position);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    } else if("FORWARD".equals(action) || "BACKWARD".equals(action)) {
                        int position = intent.getIntExtra("offset", -1);
                        try {
                            params.put("offset", position);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                    mFeedback.feedback(action, Feedback.SILENCE);
                    if(mIXiriManage
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值