texttospeak.QUEUE_ADD निरंतर काम नहीं कर रहा है

मैं Texttospeech इंटरफेस पर काम कर रहा हूँ। जिसमें मैं कुछ प्रसंस्करण के बाद कुछ पाठ जोड़ रहा हूं। Google एंड्रॉइड डेवलपर के अनुसार आपको स्पीच विधि में टेक्स्टटॉस्पेक.QUEUE_ADD के रूप में निरंतर लिखना है, लेकिन यह मेरे लिए काम नहीं कर रहा है, इस पर मेरी मदद कर सकते हैं।

protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_audio_bus);
        textView = (EditText) findViewById(R.id.ipEditText);
        welcomeNote = (TextView) findViewById(R.id.welcomeTextView);
        text = welcomeNote.getText().toString();
       speakText=   text.concat(" , Please wait we are retriving information");
        System.out.println("1 "+ speakText);
        IP = getIntent().getExtras().getString("IP");

        tts = new TextToSpeech(this, new OnInitListener() {


             @Override
            public void onInit(int status) {
               //TODO Auto-generated method stub
                if (status == TextToSpeech.SUCCESS) {
                    tts.setLanguage(Locale.ENGLISH);
                    //tts.setSpeechRate(1.1f);
                    speakOut( speakText);
                    //tts.speak(IP, TextToSpeech.QUEUE_ADD, null);
                }
            }
        });

           //http post
        try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://"+IP+"/checkingbusno.php");
            List nameValuePairs = new ArrayList(1);
            nameValuePairs.add(new BasicNameValuePair("BusStopName", "thakur_complex"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        }catch(Exception e){
            Log.e("log_tag", "Error in http connection"+e.toString());
        }

        //convert response to string
        try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
            sb = new StringBuilder();
            sb.append(reader.readLine() + "\n");
            String line="0";

            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }

            is.close();
            result=sb.toString();
            textView.setText(result);
            //initialising  once again tts value 
            tts.speak(result, TextToSpeech.QUEUE_ADD,null);
        }catch(Exception e){
            Log.e("log_tag", "Error converting result "+e.toString());
        }   





    }

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



    private void speakOut(String text) {

        //String text = txtText.getText().toString();

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

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


}
0
मैंने उस चीज़ को अद्यतन किया है
जोड़ा लेखक Ashishsingh, स्रोत
क्या आप कुछ कोड जोड़ सकते हैं जो आप करने की कोशिश कर रहे हैं?
जोड़ा लेखक Ricardo Lage, स्रोत

1 उत्तर

tts.speak (परिणाम, TextToSpeech.QUEUE_ADD, शून्य) पर आपका कॉल; किया जा रहा है टीटीएस शुरू होने से पहले।

QUEUE_ADD ध्वज प्रारंभ करने के बाद एक साथ अनुरोध करने के लिए ध्वज है। मान लीजिए कि आपके टीटी पहले ही बोल रहे हैं और आप इसे कुछ और बोलना चाहते हैं। उस स्थिति में, आप इसे आगे बोली जाने के लिए कतार में जोड़ते हैं। किसी भी तरह से, फ्लश या कतार में जोड़ने का उपयोग करके, आपको tts.speak() को onInit() के बाद status == textToSpeech.SUCCESS

संपादित करें:

आपके पास कहां है:

tts.speak(result, TextToSpeech.QUEUE_ADD,null);

इसे इसके साथ बदलें:

speakText = result;

आशा करता हूँ की ये काम करेगा।

0
जोड़ा
लेकिन मैं oninit विधि initalizing के बाद बुला रहा हूँ
जोड़ा लेखक Ashishsingh, स्रोत
तो उस चीज़ को कैसे नियंत्रित करें ........
जोड़ा लेखक Ashishsingh, स्रोत
मैंने इसे केवल वैश्विक वैरिएबल के रूप में घोषित कर दिया है।
जोड़ा लेखक Ashishsingh, स्रोत
यह केवल ओप बदल जाएगा
जोड़ा लेखक Ashishsingh, स्रोत
जोड़ा लेखक Ashishsingh, स्रोत
नहीं आप नहीं हैं। जब आप new TextToSpeech() को कॉल करते हैं तो आपको कोई गारंटी नहीं है कि onInit() को तुरंत कॉल किया जाएगा। आपकी onCreate() विधि <�कोड> tts.speak() कॉल को कॉल करने से पहले <�कोड> tts.speak() कॉल पर अपने शेष कोड के साथ जारी रहेंगे। onInit() ।
जोड़ा लेखक Ricardo Lage, स्रोत
एक साधारण समाधान: अपने onCreate() पर, वैश्विक चर से बात करने के लिए अपना टेक्स्ट जोड़ें। जब आपका onInit() कहा जाता है, तो पाठ को वापस बोलने के लिए इस वैश्विक चर का संदर्भ लें।
जोड़ा लेखक Ricardo Lage, स्रोत
उत्तर पर मेरा संपादन देखें।
जोड़ा लेखक Ricardo Lage, स्रोत
आपका क्या अर्थ है?
जोड़ा लेखक Ricardo Lage, स्रोत