2011-03-07 10 views
5

मैं एंड्रॉइड के टीटीएस को एक सेवा के अंदर चलाने की कोशिश कर रहा हूं, लेकिन मुझे नहीं पता कि यह क्यों काम नहीं कर रहा है, यह संकलित करता है, क्रैश नहीं होता है, लेकिन यह काम नहीं करता है ।एक सेवा में एंड्रॉइड टीटीएस चलाना

टोस्ट अधिसूचना हालांकि काम करती है।

package alarm.test; 

import android.app.Service; 
import com.google.tts.TextToSpeechBeta; 
import android.content.Intent; 
import android.os.IBinder; 
import android.widget.Toast; 

public class MyAlarmService extends Service { 

    private TextToSpeechBeta myTts; 
    private TextToSpeechBeta.OnInitListener ttsInitListener = new TextToSpeechBeta.OnInitListener() { 
     public void onInit(int arg0, int arg1) { 
      myTts.speak("", 0, null); 
     } 
    }; 

@Override 
public void onCreate() { 
// TODO Auto-generated method stub 
    myTts = new TextToSpeechBeta(this, 
      ttsInitListener); 

Toast.makeText(this, "MyAlarmService.onCreate()", Toast.LENGTH_LONG).show(); 
} 

@Override 
public IBinder onBind(Intent intent) { 
// TODO Auto-generated method stub 
    myTts.speak("something is working", TextToSpeechBeta.QUEUE_FLUSH, null); 
Toast.makeText(this, "MyAlarmService.onBind()", Toast.LENGTH_LONG).show(); 
return null; 
} 

@Override 
public void onDestroy() { 
// TODO Auto-generated method stub 
super.onDestroy(); 
Toast.makeText(this, "MyAlarmService.onDestroy()", Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onStart(Intent intent, int startId) { 
// TODO Auto-generated method stub 
super.onStart(intent, startId); 
Toast.makeText(this, "MyAlarmService.onStart()", Toast.LENGTH_LONG).show(); 
} 

@Override 
public boolean onUnbind(Intent intent) { 
// TODO Auto-generated method stub 
Toast.makeText(this, "MyAlarmService.onUnbind()", Toast.LENGTH_LONG).show(); 
return super.onUnbind(intent); 
} 

} 
+0

कृपया "काम न करें" से आपका क्या मतलब है, इसके बारे में अधिक विस्तार से वर्णन करें। आप LogCat पर क्या देखते हैं? –

+0

डीबग/TextToSpeechBeta (512): TextToSpeechBeta नहीं instled - बात के लिए बुनियादी मंच TextToSpeech को dfauing वर्बोज़/TtsSice (418): टीटीएस सेवा प्राप्त जानकारी/TtsService (418): stoping जानकारी/TtsService (418): रूका वर्बोज़/टीटीएस सेवा (418): टीटीएस प्रोसेसिंग: वर्बोज़/टीटीएस सेवा (418): टीटीएस सर्विस.सेट लैंगेज (इंग्लैंड, यूएसए,) आईएनएफओ/एसवीओएक्स पिको इंजन (418): भाषा पहले ही लोड हो चुकी है (एन-यूएस == एन-यूएस) DEBUG/Dalvikvm (68): GC_CONCURRENT 719K मुक्त, 48% मुफ्त 4093K/7751K, बाहरी 2041K/2378K, 21ms + 27ms DEBUG/SntpClient (68): अनुरोध समय विफल: java.net.SocketException: पता परिवार द्वारा समर्थित नहीं है प्रोटोकॉल –

उत्तर

0

ठीक है, इस सवाल को मुझे Google के साथ मिलकर एक बेहतर उत्तर दिया।

इस प्रश्न के उत्तर पर जाएं, और इसे अपने एप्लिकेशन के अनुरूप बदलने के लिए बदलें।

TTS doesn't speak from a service whereas it does it from an activity in android

14

आप नीचे दिए गए की तरह कर सकते हैं: यह मेरे लिए काम कर रहा है। आप इस तरह, इस सेवा के शुरू करने के लिए एक गतिविधि बनाना चाहिए: this.startService (आशय)

public class TTSService extends Service implements TextToSpeech.OnInitListener{ 

private String str; 
private TextToSpeech mTts; 
private static final String TAG="TTSService"; 

@Override 

public IBinder onBind(Intent arg0) { 

    return null; 
} 


@Override 
public void onCreate() { 

     mTts = new TextToSpeech(this, 
       this // OnInitListener 
       ); 
     mTts.setSpeechRate(0.5f); 
     Log.v(TAG, "oncreate_service"); 
    str ="turn left please "; 
    super.onCreate(); 
} 


@Override 
public void onDestroy() { 
    // TODO Auto-generated method stub 
    if (mTts != null) { 
      mTts.stop(); 
      mTts.shutdown(); 
     } 
     super.onDestroy(); 
} 

@Override 
public void onStart(Intent intent, int startId) { 


    sayHello(str); 

    Log.v(TAG, "onstart_service"); 
    super.onStart(intent, startId); 
} 

@Override 
public void onInit(int status) { 
    Log.v(TAG, "oninit"); 
    if (status == TextToSpeech.SUCCESS) { 
      int result = mTts.setLanguage(Locale.US); 
      if (result == TextToSpeech.LANG_MISSING_DATA || 
       result == TextToSpeech.LANG_NOT_SUPPORTED) { 
       Log.v(TAG, "Language is not available."); 
      } else { 

       sayHello(str); 

      } 
     } else { 
      Log.v(TAG, "Could not initialize TextToSpeech."); 
     } 
} 
private void sayHello(String str) { 
     mTts.speak(str, 
       TextToSpeech.QUEUE_FLUSH, 
       null); 
} 
} 
+0

बहुत मदद की, धन्यवाद। –

संबंधित मुद्दे