package com.simbaliu.vcyp;
import android.app.Activity;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.RecognizerListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechRecognizer;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;
import com.simbaliu.vcyp.bean.TalkBackVo;
import com.simbaliu.vcyp.view.FloatView;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class MainActivity extends Activity {
@BindView(R.id.et_tts)
EditText etTts;
@BindView(R.id.btn_tts)
Button btnTts;
@BindView(R.id.btn_talk)
Button btnTalk;
@BindView(R.id.tv_talk_back)
TextView tvTalkBack;
@BindView(R.id.btn_show_float_view)
Button btnShowFloatView;
//语音合成器
private SpeechSynthesizer mSynthesizer;
private static Gson gson = new Gson();
private List<TalkBackVo> talkBackVoList;
private FloatView floatView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
talkBackVoList = new ArrayList<TalkBackVo>();
//语音初始化,在使用应用使用时需要初始化一次就好,如果没有这句会出现10111初始化失败
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=580f0e15");
//处理语音合成关键类
mSynthesizer = SpeechSynthesizer.createSynthesizer(this, mInitListener);
}
private InitListener mInitListener = new InitListener() {
@Override
public void onInit(int code) {
Log.e("tag", "initListener init code = " + code);
}
};
@OnClick({R.id.btn_tts, R.id.btn_talk, R.id.btn_show_float_view})
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_tts:
//设置发音人
mSynthesizer.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
//设置音调
mSynthesizer.setParameter(SpeechConstant.PITCH, "50");
//设置音量
mSynthesizer.setParameter(SpeechConstant.VOLUME, "50");
String str = etTts.getText().toString();
int code;
if (TextUtils.isEmpty(str)) {
code = mSynthesizer.startSpeaking("你想要我说什么?", mTtsListener);
} else {
code = mSynthesizer.startSpeaking(str, mTtsListener);
}
Log.e("tag", "mSynthesizer start code = " + code);
break;
case R.id.btn_talk:
//语音识别dialog
RecognizerDialog mDialog = new RecognizerDialog(this, mInitListener);
//设置accent、language等参数
mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
mDialog.setParameter(SpeechConstant.ACCENT, "mandarin");
// mDialog.setParameter("asr_sch","1");
// mDialog.setParameter("nlp_version","2.0");
mDialog.setListener(mRecognizerDialogListerer);
mDialog.show();
break;
case R.id.btn_show_float_view:
if (Build.VERSION.SDK_INT >= 23) {
if (Settings.canDrawOverlays(this)) {
showFloatView();
} else {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
startActivity(intent);
}
} else {
showFloatView();
}
break;
}
}
//语音合成器listener
private SynthesizerListener mTtsListener = new SynthesizerListener() {
@Override
public void onSpeakBegin() {
}
@Override
public void onBufferProgress(int i, int i1, int i2, String s) {
}
@Override
public void onSpeakPaused() {
}
@Override
public void onSpeakResumed() {
}
@Override
public void onSpeakProgress(int i, int i1, int i2) {
}
@Override
public void onCompleted(SpeechError speechError) {
if (speechError != null) {
Log.e("tag", "speechError.getErrorCode() = " + speechError.getErrorCode());
} else {
Log.e("tag", "success???");
}
}
@Override
public void onEvent(int i, int i1, int i2, Bundle bundle) {
}
};
//语音识别器dialog的listener
private RecognizerDialogListener mRecognizerDialogListerer = new RecognizerDialogListener() {
@Override
public void onResult(RecognizerResult recognizerResult, boolean isLast) {
String jsonStr = new String(recognizerResult.getResultString());
Type type = new TypeToken<TalkBackVo>() {
}.getType();
TalkBackVo talkBackVo = gson.fromJson(jsonStr, type);
talkBackVoList.add(talkBackVo);
Log.e("tag", recognizerResult.getResultString());
String finalStr = "";
//当是最后一句话时,才执行拼接字段操作
if (isLast) {
for (int i = 0; i < talkBackVoList.size(); i++) {
for (int j = 0; j < talkBackVoList.get(i).getWs().size(); j++) {
for (int k = 0; k < talkBackVoList.get(i).getWs().get(j).getCw().size(); k++) {
finalStr = finalStr + talkBackVoList.get(i).getWs().get(j).getCw().get(k).getW();
}
}
}
tvTalkBack.setText(finalStr);
}
if (finalStr.contains("点击")) {
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 1000;
float x = 553;
float y = 867;
int metaState = 0;
MotionEvent downEvent = MotionEvent.obtain(
downTime, downTime, MotionEvent.ACTION_DOWN, x, y, metaState);
MotionEvent upEvent = MotionEvent.obtain(
eventTime, eventTime, MotionEvent.ACTION_UP, x, y, metaState);
Log.e("tag", "motionEvent.obtain()");
getWindow().getDecorView().dispatchTouchEvent(downEvent);
getWindow().getDecorView().dispatchTouchEvent(upEvent);
Log.e("tag", "view");
downEvent.recycle();
upEvent.recycle();
Log.e("tag", "motionEvent.recycle()");
}
}
@Override
public void onError(SpeechError speechError) {
if (speechError != null) {
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android 讯飞语音开发 http://blog.csdn.net/u013806766/article/details/52981497 (102个子文件)
gradlew.bat 2KB
fileSnapshots.bin 3.12MB
taskArtifacts.bin 159KB
fileHashes.bin 143KB
localClassSetAnalysis.bin 24KB
outputFileStates.bin 20KB
localJarClasspathSnapshot.bin 20KB
localJarClasspathSnapshot.bin 19KB
localJarClasspathSnapshot.bin 19KB
localClassSetAnalysis.bin 18KB
localClassSetAnalysis.bin 18KB
config 237B
description 73B
exclude 240B
build.gradle 1013B
build.gradle 656B
settings.gradle 16B
gradlew 5KB
HEAD 23B
app.iml 10KB
VCYP.iml 935B
Msc.jar 384KB
Sunflower.jar 55KB
gradle-wrapper.jar 52KB
MainActivity.java 12KB
TalkBackVo.java 1KB
TalkBackWordsVo.java 649B
FloatView.java 642B
TalkBackChineseWordVo.java 545B
ApplicationTest.java 360B
ExampleUnitTest.java 324B
localJarClasspathSnapshot.lock 17B
localClassSetAnalysis.lock 17B
localJarClasspathSnapshot.lock 17B
localClassSetAnalysis.lock 17B
localJarClasspathSnapshot.lock 17B
localClassSetAnalysis.lock 17B
cache.properties.lock 17B
.name 4B
voice_full.png 16KB
voice_empty.png 14KB
waiting.png 12KB
ic_launcher.png 10KB
warning.png 8KB
ic_launcher.png 8KB
ic_launcher.png 5KB
icon_main_menu_order_water.png 4KB
icon_main_menu_order_milk.png 4KB
ic_launcher.png 3KB
ic_launcher.png 2KB
voice_bg.9.png 1KB
proguard-rules.pro 5KB
gradle.properties 872B
local.properties 419B
gradle-wrapper.properties 231B
cache.properties 31B
pre-rebase.sample 5KB
update.sample 4KB
pre-commit.sample 2KB
pre-push.sample 1KB
prepare-commit-msg.sample 1KB
commit-msg.sample 896B
pre-receive.sample 544B
applypatch-msg.sample 478B
pre-applypatch.sample 424B
post-update.sample 189B
libmsc.so 1.56MB
libmsc.so 1.39MB
libmsc.so 1.38MB
libmsc.so 1.32MB
libmsc.so 1.32MB
libmsc.so 1.09MB
libmsc.so 1.09MB
workspace.xml 149KB
misc.xml 3KB
recognize.xml 3KB
activity_main.xml 2KB
AndroidManifest.xml 2KB
support_v4_23_4_0.xml 895B
gradle.xml 833B
appcompat_v7_23_4_0.xml 753B
compiler.xml 686B
animated_vector_drawable_23_4_0.xml 637B
support_vector_drawable_23_4_0.xml 632B
butterknife_8_4_0.xml 608B
butterknife_annotations_8_4_0.xml 592B
runConfigurations.xml 564B
hamcrest_core_1_3.xml 526B
gson_2_7.xml 497B
support_annotations_24_1_0.xml 479B
junit_4_12.xml 477B
styles.xml 394B
dimens.xml 364B
modules.xml 345B
Sunflower.xml 221B
dimens.xml 216B
colors.xml 214B
Msc.xml 209B
vcs.xml 180B
encodings.xml 159B
共 102 条
- 1
- 2
资源评论
- 三妹的背心带2017-10-31这个工程不能用啊
u013806766
- 粉丝: 12
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功