3

Speech to the text: NullPointerException

 3 years ago
source link: https://www.codesd.com/item/speech-to-the-text-nullpointerexception.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Speech to the text: NullPointerException

advertisements

Please have a look at the following code

package com.ace.voicebuddy;

        import java.util.ArrayList;

        import android.os.Bundle;
        import android.app.Activity;
        import android.content.ActivityNotFoundException;
        import android.content.Intent;
        import android.speech.RecognizerIntent;
        import android.view.Menu;
        import android.view.View;
        import android.view.View.OnClickListener;
        import android.widget.EditText;
        import android.widget.ImageView;
        import android.widget.Toast;

        public class VoiceNotes extends Activity {

            private ImageView speakNow;
            private EditText voiceEdt;
            private static final int RESULT_SPEECH = 1;

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_voice_notes);

                //Intialize instance variables
                speakNow = (ImageView)findViewById(R.id.speak_now);

                voiceEdt = (EditText)findViewById(R.id.voice_to_text_edt);

                //Registering Event Handlers
                speakNow.setOnClickListener(new SpeakNowEvent());
            }

            @Override
            public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.voice_notes, menu);
                return true;
            }

            //Event handler for Speak Now button
            private class SpeakNowEvent implements OnClickListener
            {

                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub

                    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");

                    try
                    {
                        startActivityForResult(intent,RESULT_SPEECH);
                    }
                    catch(ActivityNotFoundException e)
                    {
                        Toast.makeText(VoiceNotes.this, "Ooops! Your device is not suppoting Speech to Text!", Toast.LENGTH_LONG).show();
                    }

                }

            }

            @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data)
            {
                super.onActivityResult(requestCode, resultCode, data);

                if(RESULT_SPEECH==requestCode)
                {
                    ArrayList<String> text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                    voiceEdt.setText(text.get(0));
                }
            }

    }

This is the first time I am working with Speech to text in android so some methods like "onActivityResult" are pretty new to me. As soon as I run this code, I get the following error

11-13 10:23:52.968: E/AndroidRuntime(1148): FATAL EXCEPTION: main
11-13 10:23:52.968: E/AndroidRuntime(1148): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {com.ace.voicebuddy/com.ace.voicebuddy.VoiceNotes}: java.lang.NullPointerException
11-13 10:23:52.968: E/AndroidRuntime(1148):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3319)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at android.app.ActivityThread.access$1100(ActivityThread.java:141)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at android.os.Looper.loop(Looper.java:137)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at android.app.ActivityThread.main(ActivityThread.java:5041)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at java.lang.reflect.Method.invokeNative(Native Method)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at java.lang.reflect.Method.invoke(Method.java:511)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at dalvik.system.NativeStart.main(Native Method)
11-13 10:23:52.968: E/AndroidRuntime(1148): Caused by: java.lang.NullPointerException
11-13 10:23:52.968: E/AndroidRuntime(1148):     at com.ace.voicebuddy.VoiceNotes.onActivityResult(VoiceNotes.java:77)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at android.app.Activity.dispatchActivityResult(Activity.java:5293)
11-13 10:23:52.968: E/AndroidRuntime(1148):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3315)
11-13 10:23:52.968: E/AndroidRuntime(1148):     ... 11 more

What I have done wrong here? Please help.


Your app is crashing because

In your onActivityResult method your data(Object of Intent ) is null and you are trying to get something form null.

ArrayList<String> text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

Update your onActivityResult() method like this

if(RESULT_SPEECH==requestCode)
                {

                 if (data!=null)
                    {
                    ArrayList<String> text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                    voiceEdt.setText(text.get(0));
                   }
                 else
                    Toast.makeText(ActivityMain.this,"No data recieved", 1).show();

            }




About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK