不是说找不到对应的Activity了嘛

解决方案 »

  1.   

    是调用系统录音?
    Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
    反正你提供的有错误
      

  2.   

    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.   

    看下3楼  帮忙找找原因
    你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙
    语音功能推荐用科大讯飞的,或者百度的。
      

  4.   

    看下3楼  帮忙找找原因
    你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙
    语音功能推荐用科大讯飞的,或者百度的。
    我安装了讯飞,但是怎么调用起来啊,不会用这东西
      

  5.   

    看下3楼  帮忙找找原因
    你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙
    语音功能推荐用科大讯飞的,或者百度的。
    我安装了讯飞,但是怎么调用起来啊,不会用这东西
    申请科大讯飞开发者->下载SDK和Demo->Demo跑起来……
    看Demo的代码。看他的IatDemo语音分析那部分,工作基本都是云端进行的。你只能改改UI之类的
      

  6.   

    看下3楼  帮忙找找原因
    你调用的是谷歌的语音是吧。可能机子里ROM阉割了谷歌语音,还有被墙
    语音功能推荐用科大讯飞的,或者百度的。
    我安装了讯飞,但是怎么调用起来啊,不会用这东西
    申请科大讯飞开发者->下载SDK和Demo->Demo跑起来……
    看Demo的代码。看他的IatDemo语音分析那部分,工作基本都是云端进行的。你只能改改UI之类的
    这样。。 谢啦