2012-11-29 41 views
0

在我的應用程序中,我顯示圖像1在其他1秒後。在第一個圖像來我想要使用texttospeech方法來描述image.i試圖that.but空指針異常即將到來。是編碼 -TextToSpeech在android處理程序

public class Shapes extends Activity { 


    private TextToSpeech mTts; 
    int flag=0; 
    ImageView iv; 
    int myData=1; 
    Handler handler = new Handler(); 
    static int v[]={R.drawable.roundd,R.drawable.rectangle,R.drawable.bluesquare}; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.shapes); 
     iv=(ImageView) findViewById(R.id.imageView1); 
      handler.postDelayed(changeImage, 2000); 
    } 

    Runnable changeImage = new Runnable(){ 

     @Override 
     public void run(){ 
      if(flag>2) 
       handler.removeCallbacks(changeImage); 
      else{ 
       mTts.speak("hii", TextToSpeech.QUEUE_ADD, null); 
       iv.setImageResource(v[flag++]); 

       Intent checkIntent = new Intent(); 
       checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
       startActivityForResult(checkIntent,myData); 
      } 
     } 

    }; 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      if (requestCode == myData) { 
       if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { 
        // success, create the TTS instance 
        mTts = new TextToSpeech(this, (OnInitListener) this); 
       } 

       else { 
        // missing data, install it 
        Intent installIntent = new Intent(); 
        installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
        startActivity(installIntent); 
       } 
      } 

     } 

    public void onInit(int status) { 
     // TODO Auto-generated method stub 
     if (status == TextToSpeech.SUCCESS) { 
      // Toast.makeText(Abcd.this, "Text-To-Speech engine is initialized", Toast.LENGTH_LONG).show(); 
       } 
     else if (status == TextToSpeech.ERROR) { 
      Toast.makeText(this, "Error occurred while initializing Text-To-Speech engine", Toast.LENGTH_LONG).show(); 
       } 

    } 

的logcat在adtivity類信息 -

11-29 10:21:07.118: E/AndroidRuntime(461): java.lang.NullPointerException 
11-29 10:21:07.118: E/AndroidRuntime(461): at com.my.KidsEasyLearning.Shapes$1.run(Shapes.java:37) 
11-29 10:21:07.118: E/AndroidRuntime(461): at android.os.Handler.handleCallback(Handler.java:587) 
11-29 10:21:07.118: E/AndroidRuntime(461): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-29 10:21:07.118: E/AndroidRuntime(461): at android.os.Looper.loop(Looper.java:123) 
11-29 10:21:07.118: E/AndroidRuntime(461): at android.app.ActivityThread.main(ActivityThread.java:3683) 
11-29 10:21:07.118: E/AndroidRuntime(461): at java.lang.reflect.Method.invokeNative(Native Method) 
11-29 10:21:07.118: E/AndroidRuntime(461): at java.lang.reflect.Method.invoke(Method.java:507) 
11-29 10:21:07.118: E/AndroidRuntime(461): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
11-29 10:21:07.118: E/AndroidRuntime(461): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
11-29 10:21:07.118: E/AndroidRuntime(461): at dalvik.system.NativeStart.main(Native Method) 
11-29 10:21:09.899: I/Process(461): Sending signal. PID: 461 SIG: 9 
+0

請張貼logcat的輸出 –

+0

什麼Shapes.java的第37行? –

+0

這是mTts.speak(「hii」,TextToSpeech.QUEUE_ADD,null);但在做出更改後,您會在其工作下面告訴它..現在只顯示第一張圖片。不顯示其他 –

回答

0

實現文字轉語音。

,並聲明變量作爲

mTts = new TextToSpeech(this, this); 

這些都是明顯的錯誤。請參閱this指南教程

+1

實際上它的工作..但只有第一個圖像顯示..然後停止 –