2011-12-21 47 views
1

我有此应用程序侦听传入消息并朗读它们。问题是,我得到以下错误,当我退出Android应用程序,短信/文本到语音(已泄漏serviceConnection)

12-21 15:45:29.949:E/ActivityThread(566):活动mo.rach.collaboration.speaker已泄漏ServiceConnection android.speech.tts .TextToSpeech $ @连接是41397858是 原来这里

束缚我基本上希望它在后台运行,这样,如果应用程序被关闭的消息仍大声朗读。我真的需要在9号回到uni之前弄清楚这个问题,因为这是项目的交付日期。

smsReceiver.java

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
import android.widget.Toast; 

public class smsreceiver extends BroadcastReceiver { 


    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
       int n; 
       Bundle bundle = intent.getExtras(); 
       Object messages[] = (Object[]) bundle.get("pdus"); 
       SmsMessage smsMessage[] = new SmsMessage[messages.length]; 
       for (n = 0; n<messages.length; n++) 
       { 
       smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); 
       } 
       // show first message 
       String sms1 = smsMessage[0].getMessageBody(); 
       String from = smsMessage[0].getOriginatingAddress(); 
       Toast toast = Toast.makeText(context,"SMS Received from "+from+":" + sms1, Toast.LENGTH_LONG); 
       toast.show(); 
       speaker.speakSMS(sms1);    
      } 

    } 

speaker.java

import android.speech.tts.*; 
import android.app.Activity; 
import android.os.Bundle; 

public class speaker extends Activity { 
    /** Called when the activity is first created. */ 
    private static TextToSpeech myTts; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     myTts = new TextToSpeech(this, ttsInitListener); 

    } 
    private TextToSpeech.OnInitListener ttsInitListener = new TextToSpeech.OnInitListener() { 
     public void onInit(int version) { 
      //myTts.speak(""+o, 0, null); 
     } 
     }; 

    public static void speakSMS(String sms) 
    { 
     myTts.speak(sms, 0, null); 
     myTts.synthesizeToFile(sms,null, "/sdcard/myappsounds/mysms.wav"); 
    } 
} 

回答

1
在您的音箱类尝试添加

void onDestroy() { 
    if(dTTS != null) { 
     dTTS.stop(); 
     dTTS.shutdown(); 
    } 
    super.onDestroy(); 
} 
+0

欢迎堆栈溢出(SO)。请尽量在答复时多加一些。试着解释你在做什么。 – 2014-02-27 11:34:50