2013-07-08 5 views
6

제 3 자 tts 인 flite를 사용하는 응용 프로그램을 개발 중입니다. 나는 tts가 문장을 말하는 것과 같은 것을하고있다. 내가 말한대로 각 단어를 강조하고 싶다. 이를 위해 나는 TTS로부터 단어 수준의 콜백을 얻을 수 있었다. 워크 플로우는 다음과 같습니다 - "말하기 텍스트"버튼이 눌려졌습니다. tt 서비스를 시작한 다음 C 언어로 된 flite tts로 텍스트를 보내고 응용 프로그램과 결합되었습니다. 이제 C 코드에서 모든 단어가 끝난 후 두 가지 다른 Java 활동에 두 번의 콜백을 수행합니다. 하나를 tts 서비스에 연결하여 단어를 강조 표시하기 위해 내 테스트 Java 활동에 두 번째로 단어 을 말하십시오. 테스트 활동에서 단어 수준의 콜백을 성공적으로 받고 있지만 이후 UI 작업을 수행 할 수 없습니다.android runonuithread() 함수가 실행되지 않습니다

다음은 콜백을받을 때 실행되는 코드입니다. 이것은 C 코드에서 호출되는 함수입니다.

private void WordCallback(int isword) {// from 
    // callback 
    if (isword == -1) { 
     Log.d(LOG_TAG, "its not a word"); 
    } else if (isword == -2) { 
     Log.d(LOG_TAG, "yeah..its the end"); 
    } else { 
     Log.d(LOG_TAG, "its word no " + isword); 

     int word = isword; 
     Log.d(LOG_TAG, "highlightwords"); 
     highlightwords(isword); 

     if (isword == 4) { 
      Log.d(LOG_TAG, "in if"); 

      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        Log.d(LOG_TAG, "thread started"); 
        try { 
         Flitetest.this.runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 
           Log.d(LOG_TAG, "run on ui"); 
           textview.setText("#" + isword); 
          } 
         }); 
         Thread.sleep(300); 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
        } 
       } 
      }).start(); 
     } 
    }  
} 

FliteTest는 활동 이름입니다. 로그는 "스레드 시작"까지 인쇄되지만 runonuithread() 안의 코드는 실행되지 않으며 오류도 없습니다.

fatal signal 11(sigsegv) at 0x6fc64e87(code=1), thread 20292(SynthThread) :

또한, 경우에하는 스레드와 runonuithread()없이 textview.settext("something") 쓰기, 그것은 오류를 제공합니다.

그 이유는 무엇입니까? 안드로이드 ICS (4.0+)

답변

0

, 당신이 당신의 AndroidManifest.xml, 과의 android:anyDensity=false이있는 경우 당신은 당신의 ICS 전화에 사용할 GPU 렌더링을 강제했다. 이는 기본 Android 앱의 경우에도 마찬가지입니다. 옵션은 android:anyDensity=false 옵션을 사용하지 않거나 휴대 전화에서 강제 GPU 렌더링을 사용하지 않도록 설정해야합니다. 다른 사람의 휴대폰에서 후자를 실제로 제어 할 수 없으므로 전자는 최상의 솔루션 인 것처럼 보입니다. 'dp'접미사를 모두 dimensions에 사용해야합니다.

+0

이 문제가 어떻게 해결 될지 설명해 주시겠습니까? –

관련 문제