2016-03-30 8 views
0

これは私のソースコードです、それはアイデアでエラーを表示しないが、それはデバイスで停止します。私のコードで何が問題になっていますか?私は何をすべきかわからない

私はプログラムに何かを言うためにスピーチを使用し、プログラムは記録に応じて、私に異なる答えを示します。

私はもう何をしているのか分かりません。問題は明らかにsetTextメソッドから始まります。

protected static final int RESULT_SPEACH =1; 
private Button record, speak; 

TextToSpeech t1; 
String SpokedText; 
private EditText txtView; 
private EditText txtView2; 
TextToSpeech t1; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_mai); 
record = (Button) findViewById(R.id.record); 
speak = (Button) findViewById(R.id.speak); 

speak.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     record(); 

    } 
}); 
} 
public void record() { 
    Intent reconize = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    reconize.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    reconize.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); 
    reconize.putExtra(RecognizerIntent.EXTRA_PROMPT, getString(R.string.Say_something)); 

    try { 
     startActivityForResult(reconize, RESULT_SPEACH); 

    } catch (ActivityNotFoundException a) { 
     Toast t = Toast.makeText(getApplicationContext(), "Tu dispositivo no puede ejecutar este tipo de operaciones", Toast.LENGTH_LONG); 
     t.show(); 
} 
} 

@Override 
public void onActivityResult (int requestCode, int resultCode, Intent Data) { 
super.onActivityResult(requestCode,resultCode,Data); 
switch (requestCode) { 
    case RESULT_SPEACH: { 
     if (resultCode == RESULT_OK && null != Data) { 
     SpokedText = data.getStringExtra(RecognizerIntent.EXTRA_RESULTS); 
       txtView2.setText(SpokedText); 
       setText(SpokedText); 

       }break; 
      } 
     } 
    } 
    public void setText(String string){ 
    if (txtView2.equals("Good Morning")){ 
     txtView.setText("Good Morning Sir"); 
    }else if(txtView2.equals("I need your help")){ 
     txtView.setText("Ok, ¿How can i help you?"); 
    } 

      } 
    @Override 
    public void onInit(int status) { 
    if (status== TextToSpeech.SUCCESS){ 
     int result = t1.setLanguage(Locale.getDefault()); 
     if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED){ 
      Log.e("TTS", "This Lenguaje is not supported"); 
     }else{ 
      speakOut(); 
     } 
    } 

} 

@TargetApi(Build.VERSION_CODES.LOLLIPOP) 
public void speakOut(){ 
    String text = txtView.getText().toString(); 


    t1.speak(text, TextToSpeech.QUEUE_FLUSH, null); 

} 
} 

Uをありがとう問題はAndroidManifestのXmlであってもよいだろうか?

<?xml version="1.0" encoding="utf-8"?> 
 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 

 
    package="com.example.dower.myapplication"> 
 

 
    <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission> 
 
    <application 
 
     android:allowBackup="true" 
 
     android:icon="@mipmap/icon" 
 
     android:label="@string/app_name" 
 
     android:supportsRtl="true" 
 
     android:theme="@style/AppTheme"> 
 

 

 
    <activity android:name=".PantallaDeInicio" 
 
     android:label="@string/StarScreen" 
 
     android:theme="@style/AppTheme.NoActionBar"> 
 
     <intent-filter> 
 
      <action android:name="android.intent.action.PICK_ACTIVITY"></action> 
 
      <category android:name="android.intent.category.LAUNCHER"></category> 
 
     </intent-filter> 
 

 
    </activity> 
 

 
    <activity 
 
      android:name=".MainActivity" 
 
      android:label="@string/app_name" 
 
      android:theme="@style/AppTheme.NoActionBar"> 
 
      <intent-filter> 
 
       <action android:name="android.intent.action.MAIN" /> 
 

 
       <category android:name="android.intent.category.DEFAULT" /> 
 
      </intent-filter> 
 
     </activity> 
 
     <activity android:name=".Casanova" 
 
        android:label="@string/casaNova" 
 
        android:theme="@style/AppTheme.NoActionBar"> 
 
      <intent-filter> 
 
       <action android:name="android.intent.action.PICK_ACTIVITY"></action> 
 
       <category android:name="android.intent.category.APP_BROWSER"></category> 
 
       <action android:name="android.intent.action.VOICE_COMMAND"></action> 
 
       <category android:name="android.intent.category.VOICE"></category> 
 
       
 

 
      </intent-filter> 
 
     </activity> 
 

 
     <!-- ATTENTION: This was auto-generated to add Google Play services to your project for 
 
      App Indexing. See https://g.co/AppIndexing/AndroidStudio for more information. --> 
 
     <meta-data 
 
      android:name="com.google.android.gms.version" 
 
      android:value="@integer/google_play_services_version" /> 
 
    </application> 
 

 
</manifest>

答えて

1

問題は、文字列を使用して制御を同一視することはできませんということです。

if (txtView2.equals("Good Morning")){ 

if (txtView2.getText().toString().equals("Good Morning")){ 

する必要があり、あなたがのTextViewで文字列をチェックするたびにU

+0

感謝を制御しますが、それはまだ動作していない同じことを行う必要があります。 :C –

+1

@RodrigoBarbozaより具体的にする必要があります。エラーのコピーを投稿できますか? – d4c0d312

関連する問題