2014-03-25 4 views
-1

안녕하세요 저는 안드로이드 개발의 초보자입니다. My Text to speech class가 작동하지 않습니다. 이클립스는 아래에 언급 된 오류를 제공하고 있으며 음성 클래스 코드에도 텍스트를 붙여 넣었습니다.말하기 클래스가 작동하지 않습니다.

03-25 20:37:49.046: E/AndroidRuntime(31160): FATAL EXCEPTION: main 
03-25 20:37:49.046: E/AndroidRuntime(31160): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sms_reader/com.example.sms_reader.Texttospeech}: java.lang.NullPointerException 
03-25 20:37:49.046: E/AndroidRuntime(31160): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2351) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2403) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at android.app.ActivityThread.access$600(ActivityThread.java:165) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at android.os.Handler.dispatchMessage(Handler.java:107) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at android.os.Looper.loop(Looper.java:194) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at android.app.ActivityThread.main(ActivityThread.java:5391) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at java.lang.reflect.Method.invokeNative(Native Method) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at java.lang.reflect.Method.invoke(Method.java:525) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at dalvik.system.NativeStart.main(Native Method) 
03-25 20:37:49.046: E/AndroidRuntime(31160): Caused by: java.lang.NullPointerException 
03-25 20:37:49.046: E/AndroidRuntime(31160): at com.example.sms_reader.Texttospeech.speakOut(Texttospeech.java:33) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at com.example.sms_reader.Texttospeech.onCreate(Texttospeech.java:26) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at android.app.Activity.performCreate(Activity.java:5122) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146) 
03-25 20:37:49.046: E/AndroidRuntime(31160): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2315) 
03-25 20:37:49.046: E/AndroidRuntime(31160): ... 11 more 

Texttospeech.java

package com.example.sms_reader; 

import java.util.Locale; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.speech.tts.TextToSpeech; 
import android.util.Log; 

public class Texttospeech extends Activity implements 
TextToSpeech.OnInitListener 
{ 

TextToSpeech tts; 
String content; 

protected void onCreate(Bundle savedInstanceState) { 
    Log.d("tag4", "INTENT RECEIVED"); 
    Intent data = getIntent(); 
    Log.d("tag5", "INTENT "); 
    String msg = data.getStringExtra("msg"); 
    String from = data.getStringExtra("from"); 
    content = "You have received a message from" +from +"and it says"+msg; 
    Log.d("tag6", content); 
    speakOut(); 

}; 

private void speakOut() { 


    tts.speak(content, TextToSpeech.QUEUE_FLUSH, null); 
} 

@Override 
public void onDestroy() { 
    // Don't forget to shutdown! 
    if (tts != null) { 
     tts.stop(); 
     tts.shutdown(); 
    } 
    super.onDestroy(); 
} 

@Override 
public void onInit(int status) { 
    // TODO Auto-generated method stub 

    if (status == TextToSpeech.SUCCESS) { 

     int result = tts.setLanguage(Locale.US); 

     // tts.setPitch(5); // set pitch level 

     // tts.setSpeechRate(2); // set speech speed rate 

     if (result == TextToSpeech.LANG_MISSING_DATA 
       || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
      Log.e("TTS", "Language is not supported"); 
     } 
     else { 

      speakOut(); 
     } 

             } 
    else 
    { 
     Log.e("TTS", "Initilization Failed"); 
    } 

} 
} 
+0

super.onCreate를 호출하지 않아 앱이 중단되어야합니다. – Blackbelt

+0

답변 중 하나가 도움이 되었다면 답을 올바른 것으로 표시해야합니다. – GhostDerfel

답변

0

NullPointerException이 호출 시점에서 null입니다. 나는 당신이 tts = new TextToSpeech(this,this);onCreate 안에 전화하는 것을 잊었다 고 생각한다.

+0

아, 네가 맞아. 고마워. –

0

귀하의 TextToSpeech (tts) 오브젝트를 도와 주셔서 감사합니다 당신이이 speakOut 방법 ...

+0

null이 오는 이유는 무엇입니까? –

+2

초기화하지 않았기 때문에?! TextToSpeech tts = new TextToSpeech() ... – ElDuderino

+0

문제는, 당신은 당신의 객체를 초기화하지 않았기 때문에 당신은 단지 null 참조를가집니다 .. – GhostDerfel

관련 문제