0
android
에 대해 Tess-two 기반 OCR 시스템을 작성하고 이상한 장애물을 발견했습니다. 사실과 연결 TextureView
사용 Camera
를 더 이상 사용되지 않으며 내 화웨이 P8에이 코드를 실행하려고하면 isAlive()
이 날을 제공하는 경우Thread.start()가 호출 될 때 onSurfaceTextureUpdated에서 예외가 발생했습니다.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.user.myApp, PID: 18386
java.lang.IllegalThreadStateException: Thread already started
at java.lang.Thread.checkNotStarted(Thread.java:864)
at java.lang.Thread.start(Thread.java:1074) [...]
내가 그 생각 :
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
Log.d("frame", "update frame");
if(btmQueue.size()<10)
btmQueue.add(mTextureView.getBitmap());
System.out.println(mOCRWorker.isAlive());
if(mOCRWorker.isAlive()==false)
{
mOCRWorker.start();
}
}
Thread mOCRWorker = new Thread(new Runnable() {
@Override
public void run() {
Log.d("Ocr:", "Running thread!");
if(apiInit==true) {
if (btmQueue.size() > 0) {
Bitmap bmp = btmQueue.pollFirst();
baseAPI.setImage(bmp);
String recognizedText = baseAPI.getUTF8Text();
Log.d("Recognized: ", recognizedText);
}
}
Log.d("Ocr:", "Thread finished!");
}
});
나는이 오류 거짓이면 실은 실제로 죽습니다. 무슨 일이 일어나고 있는지 단서가 있습니까?
그리고 더 - 스레드가 한 번 실행됩니다 : 스레드에서 첫 번째 및 두 번째 로그 메시지를 수신 한 다음 오류가 발생합니다! –