android 关于 语音的 APP 崩溃报错 不是说找不到对应的Activity了嘛 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是调用系统录音?Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);反正你提供的有错误 package com.test.duihua;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import cn.Wongxming.weather.WeatherForecast;import DB.DBManager;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.graphics.drawable.AnimationDrawable;import android.os.Bundle;import android.os.StrictMode;import android.speech.RecognizerIntent;import android.speech.tts.TextToSpeech;import android.speech.tts.TextToSpeech.OnInitListener;import android.view.View;import android.view.Window;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast;public class VoiceActivity extends Activity implements OnInitListener{ private Button reButton,voiceButton; private int MY_DATA_CHECK_CODE = 0; private SocketClient client; private TextToSpeech tts; private String text; private ImageView ivAnimView; private AnimationDrawable animationDrawable; private static final int VOICE_RECOGNITION_REQUEST_CODE_1 = 1234; private ArrayList<String> matches=new ArrayList<String>(); @SuppressLint("NewApi") public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.voiceactivity); /////////////////////////////////////// StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() //构造StrictMode .detectDiskReads() //当发生磁盘读操作时输出 .detectDiskWrites()//当发生磁盘写操作时输出 .detectNetwork() //访问网络时输出,这里可以替换为detectAll() 就包括了磁盘读写和网络I/O .penaltyLog() //以日志的方式输出 .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() //探测SQLite数据库操作 .penaltyLog() //以日志的方式输出 .penaltyDeath() .build()); //////////////////////////////////////////////// // getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.titlebar); reButton=(Button)findViewById(R.id.pause4); voiceButton=(Button)findViewById(R.id.voicestart); ivAnimView = (ImageView) findViewById(R.id.voiceView); client=new SocketClient(); reButton.setOnClickListener(new OnClickListener(){ public void onClick(View v){ Intent mIntent = new Intent(); mIntent.setClass( VoiceActivity.this,Mainmenu.class); VoiceActivity.this.startActivity(mIntent); tts.shutdown(); VoiceActivity.this.finish(); } }); voiceButton.setOnClickListener(new OnClickListener(){ public void onClick(View v){ startVoiceRecognitionActivity(); }}); Intent checkIntent = new Intent(); checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); startActivityForResult(checkIntent, MY_DATA_CHECK_CODE); } public void startVoiceRecognitionActivity(){ //经过进程Intent通报语音辨认的情势 try{ Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); //语音辨认 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); //提示语音 intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo"); //Intent、语音辨认 startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE_1); }catch (Exception e){ // TODO: handle exception e.printStackTrace(); Toast.makeText(getApplicationContext(), "找不到语音设备", 1).show();} } //回调函数onActivityResult @Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ if (requestCode == VOICE_RECOGNITION_REQUEST_CODE_1 && resultCode == RESULT_OK) { // 得到语音的字符 matches =data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); if(matches.size()<=0)text=""; else text=matches.get(0).toString(); String anwser=getanswer(); String[] biaoqing=anwser.split("/"); if (biaoqing[0]!=null && biaoqing[0].length()>0) {if(biaoqing[0].equals("时间")) tts.speak(getDate(), TextToSpeech.QUEUE_FLUSH, null);else if(biaoqing[0].equals("天气")){ tts.speak("让我们一起去看看吧!", TextToSpeech.QUEUE_FLUSH, null); Intent mIntent = new Intent(); mIntent.setClass( VoiceActivity.this,WeatherForecast.class); VoiceActivity.this.startActivity(mIntent); VoiceActivity.this.finish(); }else{ float biaoqingnum=Float.valueOf(biaoqing[1]); tts.speak(biaoqing[0], TextToSpeech.QUEUE_FLUSH, null); if(biaoqingnum>0.6) getbiaoqingnum(R.anim.frame_voiceanimation_happy); if(biaoqingnum<(-0.6)) getbiaoqingnum(R.anim.frame_voiceanimation_angry); if(biaoqingnum<(-0.3)&&biaoqingnum>(-0.6)) getbiaoqingnum(R.anim.frame_voiceanimation_cry); if(biaoqingnum<(0.3)&&biaoqingnum>(-0.3)) ivAnimView.setBackgroundResource(R.drawable.man); } if(!tts.isSpeaking()){ animationDrawable.stop(); ivAnimView.setBackgroundResource(R.drawable.man); } } super.onActivityResult(requestCode, resultCode, data); } if (requestCode == MY_DATA_CHECK_CODE) { if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { // success, create the TTS instance tts = new TextToSpeech(this, this); } else { // missing data, install it Intent installIntent = new Intent(); installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); startActivity(installIntent); } } } public void getbiaoqingnum(int num){ ivAnimView.setBackgroundResource(num); Object backgroundObject = ivAnimView.getBackground(); animationDrawable = (AnimationDrawable) backgroundObject; animationDrawable.setOneShot(false); animationDrawable.stop(); animationDrawable.start(); } public String getanswer(){ String endstr=text.substring(text.length()-1, text.length()); if(endstr.equals("啊")||endstr.equals("哦")) text=text.substring(0,text.length()-1); DBManager dbmanager=new DBManager(VoiceActivity.this);//启动数据库 String anwser=dbmanager.query(text);//查询 dbmanager.closeDatabase();//关闭数据库 if(anwser==""||anwser.equals(null)) { text=text+ "\r\n"; try{ if(client.ConnectSever("172.22.251.1")) { client.setmessage(text); anwser=client.getmessage(); } if(client.CloseSocket()) System.out.println("SocketClient close sueccess"); else System.out.println("SocketClient close false"); } catch (Exception e) { e.printStackTrace(); } } return anwser; } @Override public void onInit(int status) { // TODO Auto-generated method stub } @Override protected void onDestroy() { super.onDestroy(); tts.shutdown(); } private String getDate(){ SimpleDateFormat sdf =new SimpleDateFormat("MM-dd HH:mm"); Date d = new Date(); return sdf.format(d); } } 看下3楼 帮忙找找原因你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙语音功能推荐用科大讯飞的,或者百度的。 看下3楼 帮忙找找原因你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙语音功能推荐用科大讯飞的,或者百度的。我安装了讯飞,但是怎么调用起来啊,不会用这东西 看下3楼 帮忙找找原因你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙语音功能推荐用科大讯飞的,或者百度的。我安装了讯飞,但是怎么调用起来啊,不会用这东西申请科大讯飞开发者->下载SDK和Demo->Demo跑起来……看Demo的代码。看他的IatDemo语音分析那部分,工作基本都是云端进行的。你只能改改UI之类的 看下3楼 帮忙找找原因你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙语音功能推荐用科大讯飞的,或者百度的。我安装了讯飞,但是怎么调用起来啊,不会用这东西申请科大讯飞开发者->下载SDK和Demo->Demo跑起来……看Demo的代码。看他的IatDemo语音分析那部分,工作基本都是云端进行的。你只能改改UI之类的这样。。 谢啦 加载网络图片时如何都能预先能知道他的宽高 商品展示,关于商品详情,服务端是用的html,的图片尺寸过大,怎么处理? 怎么查看RadioButton是否被选中了 android 如何截屏? 对象赋值? Android MonkeyRunner android中怎么实现重力感应阿 设置surfaceview大小后显示视频上边黑边下边灰边 ADT无法安装,墙墙墙,被烦死了! Android RecyclerView问题 机顶盒安卓系统与手机安卓系统的区别是什么? 关于非UI线程更新UI遇到的一些问题
Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
反正你提供的有错误
import java.util.ArrayList;
import java.util.Date;import cn.Wongxming.weather.WeatherForecast;
import DB.DBManager;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.StrictMode;
import android.speech.RecognizerIntent;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class VoiceActivity extends Activity implements OnInitListener{
private Button reButton,voiceButton;
private int MY_DATA_CHECK_CODE = 0;
private SocketClient client;
private TextToSpeech tts;
private String text;
private ImageView ivAnimView;
private AnimationDrawable animationDrawable;
private static final int VOICE_RECOGNITION_REQUEST_CODE_1 = 1234;
private ArrayList<String> matches=new ArrayList<String>();
@SuppressLint("NewApi")
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.voiceactivity);
///////////////////////////////////////
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() //构造StrictMode
.detectDiskReads() //当发生磁盘读操作时输出
.detectDiskWrites()//当发生磁盘写操作时输出
.detectNetwork() //访问网络时输出,这里可以替换为detectAll() 就包括了磁盘读写和网络I/O
.penaltyLog() //以日志的方式输出
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects() //探测SQLite数据库操作
.penaltyLog() //以日志的方式输出
.penaltyDeath()
.build());
////////////////////////////////////////////////
// getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.titlebar);
reButton=(Button)findViewById(R.id.pause4);
voiceButton=(Button)findViewById(R.id.voicestart);
ivAnimView = (ImageView) findViewById(R.id.voiceView);
client=new SocketClient();
reButton.setOnClickListener(new OnClickListener(){
public void onClick(View v){
Intent mIntent = new Intent();
mIntent.setClass( VoiceActivity.this,Mainmenu.class);
VoiceActivity.this.startActivity(mIntent);
tts.shutdown();
VoiceActivity.this.finish();
}
});
voiceButton.setOnClickListener(new OnClickListener(){
public void onClick(View v){
startVoiceRecognitionActivity();
}});
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
}
public void startVoiceRecognitionActivity(){
//经过进程Intent通报语音辨认的情势
try{
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
//语音辨认
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
//提示语音
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
//Intent、语音辨认
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE_1);
}catch (Exception e){
// TODO: handle exception
e.printStackTrace();
Toast.makeText(getApplicationContext(), "找不到语音设备", 1).show();}
}
//回调函数onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE_1 && resultCode == RESULT_OK)
{
// 得到语音的字符
matches =data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
if(matches.size()<=0)text="";
else text=matches.get(0).toString();
String anwser=getanswer();
String[] biaoqing=anwser.split("/");
if (biaoqing[0]!=null && biaoqing[0].length()>0)
{if(biaoqing[0].equals("时间"))
tts.speak(getDate(), TextToSpeech.QUEUE_FLUSH, null);else if(biaoqing[0].equals("天气")){
tts.speak("让我们一起去看看吧!", TextToSpeech.QUEUE_FLUSH, null);
Intent mIntent = new Intent();
mIntent.setClass( VoiceActivity.this,WeatherForecast.class);
VoiceActivity.this.startActivity(mIntent);
VoiceActivity.this.finish();
}else{
float biaoqingnum=Float.valueOf(biaoqing[1]);
tts.speak(biaoqing[0], TextToSpeech.QUEUE_FLUSH, null);
if(biaoqingnum>0.6)
getbiaoqingnum(R.anim.frame_voiceanimation_happy);
if(biaoqingnum<(-0.6))
getbiaoqingnum(R.anim.frame_voiceanimation_angry);
if(biaoqingnum<(-0.3)&&biaoqingnum>(-0.6))
getbiaoqingnum(R.anim.frame_voiceanimation_cry);
if(biaoqingnum<(0.3)&&biaoqingnum>(-0.3))
ivAnimView.setBackgroundResource(R.drawable.man);
}
if(!tts.isSpeaking()){
animationDrawable.stop();
ivAnimView.setBackgroundResource(R.drawable.man);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
tts = new TextToSpeech(this, this);
}
else {
// missing data, install it
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
public void getbiaoqingnum(int num){
ivAnimView.setBackgroundResource(num);
Object backgroundObject = ivAnimView.getBackground();
animationDrawable = (AnimationDrawable) backgroundObject;
animationDrawable.setOneShot(false);
animationDrawable.stop();
animationDrawable.start();
}
public String getanswer(){
String endstr=text.substring(text.length()-1, text.length());
if(endstr.equals("啊")||endstr.equals("哦"))
text=text.substring(0,text.length()-1);
DBManager dbmanager=new DBManager(VoiceActivity.this);//启动数据库
String anwser=dbmanager.query(text);//查询
dbmanager.closeDatabase();//关闭数据库
if(anwser==""||anwser.equals(null))
{
text=text+ "\r\n";
try{
if(client.ConnectSever("172.22.251.1"))
{
client.setmessage(text);
anwser=client.getmessage();
}
if(client.CloseSocket())
System.out.println("SocketClient close sueccess");
else System.out.println("SocketClient close false");
} catch (Exception e) {
e.printStackTrace();
}
}
return anwser;
}
@Override
public void onInit(int status) {
// TODO Auto-generated method stub
}
@Override
protected void onDestroy() {
super.onDestroy();
tts.shutdown(); } private String getDate(){
SimpleDateFormat sdf =new SimpleDateFormat("MM-dd HH:mm");
Date d = new Date();
return sdf.format(d);
}
}
你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙
语音功能推荐用科大讯飞的,或者百度的。
你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙
语音功能推荐用科大讯飞的,或者百度的。
我安装了讯飞,但是怎么调用起来啊,不会用这东西
你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙
语音功能推荐用科大讯飞的,或者百度的。
我安装了讯飞,但是怎么调用起来啊,不会用这东西
申请科大讯飞开发者->下载SDK和Demo->Demo跑起来……
看Demo的代码。看他的IatDemo语音分析那部分,工作基本都是云端进行的。你只能改改UI之类的
你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙
语音功能推荐用科大讯飞的,或者百度的。
我安装了讯飞,但是怎么调用起来啊,不会用这东西
申请科大讯飞开发者->下载SDK和Demo->Demo跑起来……
看Demo的代码。看他的IatDemo语音分析那部分,工作基本都是云端进行的。你只能改改UI之类的
这样。。 谢啦