2011-12-21 10 views
1

このアプリケーションでは、受信したメッセージをリッスンして朗読します。 45:29.949:E/ActivityThread(566):活動mo.rach.collaboration.speakerが漏れたServiceConnection android.speech.tts私はAndroidアプリケーション、SMS /テキストからスピーチ(serviceConnectionが漏洩しています)

12-21 15を終了すると、問題は、私は次のエラーを取得されます もともとここ

結合していた私は、基本的に、メッセージはまだ声を出して読まれることをアプリが閉じている場合ように、それがバックグラウンドで実行したいと思います41397858 @ .TextToSpeech $接続。私が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)スタックオーバーフローへようこそ。あなたが答えたときにもう少し詳しく説明してください。あなたがしていることを説明しよう。 –

関連する問題