文本到语音类不起作用

时间:2014-03-25 15:14:12

标签: android

嗨,我是Android开发的新手。我的文本到语音课程不起作用。 Eclipse正在给出下面提到的错误,我也将Text粘贴到语音类代码。谢谢你的帮助

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");
    }

}
}

2 个答案:

答案 0 :(得分:0)

您调用TextToSpeech (tts)方法时,speakOut对象为空...

答案 1 :(得分:0)

有一个NullPointerException。我想您在访问对象本身之前忘记在tts = new TextToSpeech(this,this);内调用onCreate