2013-03-21 4 views
2

음성을 사용하여 응용 프로그램을 만들려고합니다. 활동 Text_entry에서 활동 CombChange로 돌아갈 때마다 로그 cat (아래)에서 이러한 서비스 연결 누출 오류가 발생합니다.android : TextTo 음성 연결 서비스 연결이 끊어졌습니다.

누구나 볼 수 있습니까?

나는 단지 Text_Entry 및 CombChange 클래스의 관련 비트를 붙여 넣은 - 그래서 실종 신고 등

public class Text_entry extends Activity implements OnTouchListener, TextToSpeech.OnInitListener{ 

    speech = new Speech(this); 
     Intent checkTTSIntent = new Intent(); 
     checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
     startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE); 

    Intent intent2 = new Intent(this, CombChange.class); 
    intent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent2.putExtra("newPat", enteredNumber); 
    startActivity(intent2); 
} 

@Override 
    public void onResume() { 
     super.onResume(); 
     Intent intent = getIntent(); 
     String hc =" "; 
     hc = intent.getExtras().getString("helpComb"); 
     if (hc.equals("true")) 
      helpComb = true; 
     else 
      helpComb = false; 
    } 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == MY_DATA_CHECK_CODE) { 
      if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { 
       speech = new Speech(this); 
      } 
      else { 
       Intent installTTSIntent = new Intent(); 
       installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
       startActivity(installTTSIntent); 
      } 
      } 
    } 

중괄호가있을 수 있습니다.

public class CombChange extends ListActivity { 
    speech = new Speech(this); 
    speech.changeText("enter the new combination"); 
    speech.speaks(); 
    SystemClock.sleep(1300); 
     Intent intent = new Intent(this, Text_entry.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.putExtra("helpComb", "true"); 
    speech.cleanUp(); 
    startActivity(intent); 
} 

.

public class Speech implements TextToSpeech.OnInitListener { 

    private String toRead; 
    private TextToSpeech tts; 
    public Speech(Context c) { 
     tts = new TextToSpeech(c, this); 
     tts.setPitch(1.2f); 
     tts.setSpeechRate(1.5f); 
    } 
    public void speaks() 
    { 
     speakOut(); 
    } 

    public void changeText(String changeTo) 
    { 
     toRead = changeTo; 
    } 


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


    public void onInit(int status) { 

     if (status == TextToSpeech.SUCCESS) { 

      int result = tts.setLanguage(Locale.UK); 

      if (result == TextToSpeech.LANG_MISSING_DATA 
        || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
       Log.e("TTS", "This Language is not supported"); 
      } else { 
       speakOut(); 
      } 

     } else { 
      Log.e("TTS", "Initilization Failed!"); 
     } 

    } 
    protected void onStop() 
    { 

     if(tts != null){ 
      tts.shutdown(); 
     }  
    } 
    private void speakOut() { 
     tts.speak(toRead, TextToSpeech.QUEUE_FLUSH, null); 
     } 
    } 

.

03-21 16:42:32.515: I/TextToSpeech(24023): Sucessfully bound to com.google.android.tts 
03-21 16:42:32.535: E/ActivityThread(24023): Activity org.BT.Text_entry has leaked ServiceConnection [email protected] that was originally bound here 
03-21 16:42:32.535: E/ActivityThread(24023): android.app.ServiceConnectionLeaked: Activity org.BT.Text_entry has leaked ServiceConnection [email protected] that was originally bound here 
03-21 16:42:32.535: E/ActivityThread(24023): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:965) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:859) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.app.ContextImpl.bindService(ContextImpl.java:1344) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.app.ContextImpl.bindService(ContextImpl.java:1336) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.content.ContextWrapper.bindService(ContextWrapper.java:401) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.speech.tts.TextToSpeech.connectToEngine(TextToSpeech.java:627) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.speech.tts.TextToSpeech.initTts(TextToSpeech.java:597) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.speech.tts.TextToSpeech.<init>(TextToSpeech.java:553) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.speech.tts.TextToSpeech.<init>(TextToSpeech.java:527) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.speech.tts.TextToSpeech.<init>(TextToSpeech.java:512) 
03-21 16:42:32.535: E/ActivityThread(24023): at org.BT.Speech.<init>(Speech.java:14) 
03-21 16:42:32.535: E/ActivityThread(24023): at org.BT.Text_entry.onCreate(Text_entry.java:97) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.app.Activity.performCreate(Activity.java:5184) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.app.ActivityThread.access$600(ActivityThread.java:140) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.os.Looper.loop(Looper.java:137) 
03-21 16:42:32.535: E/ActivityThread(24023): at android.app.ActivityThread.main(ActivityThread.java:4898) 
03-21 16:42:32.535: E/ActivityThread(24023): at java.lang.reflect.Method.invokeNative(Native Method) 
03-21 16:42:32.535: E/ActivityThread(24023): at java.lang.reflect.Method.invoke(Method.java:511) 
03-21 16:42:32.535: E/ActivityThread(24023): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 
03-21 16:42:32.535: E/ActivityThread(24023): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
03-21 16:42:32.535: E/ActivityThread(24023): at dalvik.system.NativeStart.main(Native Method) 
03-21 16:42:32.670: I/TextToSpeech(24023): Sucessfully bound to com.google.android.tts 
03-21 16:42:32.670: D/(24023): 3333333333333333333333333333333333333333333333333 
03-21 16:42:32.670: E/SpannableStringBuilder(24023): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
03-21 16:42:32.670: E/SpannableStringBuilder(24023): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
03-21 16:42:32.775: I/TextToSpeech(24023): Connected to TTS Service 
03-21 16:42:32.780: I/TextToSpeech(24023): Connected to TTS Service 
+0

앱이 실제로 실행됩니까? CombChange 클래스에는 메서드가 전혀 없습니다. –

답변

0

난이 도움이되지만 시도하십시오 얼마나 확실하지 않다 수 액티비티 클래스에서 onPause() 메소드를 구현한다. 그리고 서비스를 명시 적으로 바인딩 해제하십시오. 예를 들어 :

@Override 
     protected void onPause() { 
      super.onPause(); 
      CalculatorUser c=new CalculatorUser(); //your Activity name object 
      c.unbindService((ServiceConnection) this); 
     } 
바인딩 해제는 문제와 해결 할 수

"활동 'APP'을 유출 ServiceConnection있다"당신이 당신의 활동에서 이동할 때 명시 적 서비스에서 저를 바인딩을 해제하시기 바랍니다 안드로이드 OS에 알려줄 필요가 그래서 주로 발생 내 활동이 현재 사용 중입니다. 다시 앱을 실행하면 서비스에 바인딩됩니다. 도움이되지 않으면 코드를 보내 주시면 문제를 해결해 드리겠습니다. 이 문제에 대한

0

실제 답변 :

당신은 서비스가 파괴 될 때 TextToSpeech 객체에 destroy()를 호출해야합니다.

나는이 문제가있어서 질문을 보았으므로 여기에 오는 다른 누구에게도 대답 할 것이라고 생각했습니다.

0

나를 위해 TextToSpeech 개체를 종료합니다.

@Override 
protected void onDestroy() { 
    tts.shutdown(); 
    super.onDestroy(); 
}