2012-09-27 67 views
2

我已經實現了從崗位演示: Android and MJPEGAndroid和MJPEG與java.lang.IllegalArgumentException異常

但是,應用程序總是一段時間後會出現錯誤後,我得到了異常:

java.lang.IllegalArgumentException: Invalid Unicode sequence: illegal character 

MjpegViewThread類下面的代碼中:

 

public void run() { 
    start = System.currentTimeMillis(); 
    PorterDuffXfermode mode = new PorterDuffXfermode(PorterDuff.Mode.DST_OVER); 
    Bitmap bm; 
    int width; 
    int height; 
    Rect destRect; 
    Canvas c = null; 
    Paint p = new Paint(); 
    String fps = ""; 
    while (mRun) 
    { 
     if(surfaceDone) 
     { 
      try 
      { 
       c = mSurfaceHolder.lockCanvas(); 
       synchronized (mSurfaceHolder) 
       { 
        try 
        { 
         bm = mIn.readMjpegFrame(); 
         destRect = destRect(bm.getWidth(),bm.getHeight()); 
         c.drawColor(Color.BLACK); 
         c.drawBitmap(bm, null, destRect, p); 
         if(showFps) { 
          p.setXfermode(mode); 
          if(ovl != null) { 
           height = ((ovlPos & 1) == 1) ? destRect.top : destRect.bottom-ovl.getHeight(); 
           width = ((ovlPos & 8) == 8) ? destRect.left : destRect.right -ovl.getWidth(); 
           c.drawBitmap(ovl, width, height, null); 
          } 
          p.setXfermode(null); 
          frameCounter++; 
          if((System.currentTimeMillis() - start) >= 1000) { 
           fps = String.valueOf(frameCounter)+"fps"; 
           frameCounter = 0; 
           start = System.currentTimeMillis(); 
           ovl = makeFpsOverlay(overlayPaint, fps); 
          } 
         } 
        } 
        catch (IOException e) 
        { 
         Log.i(TAG, "Error: "+e); 
        } 
       } 
      } 
      catch (Exception e) 
      { 
       Log.i(TAG, "Error: "+e); 
      } 
      finally 
      { 
       if (c != null) 
        mSurfaceHolder.unlockCanvasAndPost(c); 
      } 
     } 
    } 
} 

我不知道下面的logcat是否通知有幫助。

 

    09-27 17:06:36.645: D/dalvikvm(10120): threadid=9: still suspended after undo (sc=1 dc=1) 
    09-27 17:06:46.745: D/dalvikvm(10120): GC_EXTERNAL_ALLOC freed 132K, 47% free 2998K/5575K, external 1625K/2137K, paused 44ms 
    09-27 17:06:46.825: D/dalvikvm(10120): GC_EXTERNAL_ALLOC freed 65K, 47% free 2997K/5639K, external 2227K/2779K, paused 27ms 
    09-27 17:06:46.955: D/dalvikvm(10120): GC_EXTERNAL_ALLOC freed 127K, 48% free 2997K/5703K, external 2827K/2827K, paused 40ms 
    09-27 17:06:47.385: D/dalvikvm(10120): GC_EXTERNAL_ALLOC freed 142K, 48% free 3000K/5703K, external 2827K/2827K, paused 31ms 
    09-27 17:06:47.515: D/dalvikvm(10120): GC_EXTERNAL_ALLOC freed 131K, 48% free 2997K/5703K, external 2827K/2827K, paused 27ms 
    09-27 17:06:47.615: D/dalvikvm(10120): GC_EXTERNAL_ALLOC freed 127K, 48% free 2997K/5703K, external 2827K/2827K, paused 31ms 

任何人都可以給我一些線索來解決這個問題嗎?

+0

你好@Indiana,你有沒有解決這個問題?我得到相同的例外... – woyaru

+0

使用此鏈接 http://stackoverflow.com/questions/10550139/android-ics-and-mjpeg-using-asynctask –

回答

0

我知道這是有點老了,但我發現這個問題的解決方案,代碼完美的作品,它是攝像頭,FPS可能是設置爲「可變」或「自動」。我使用的是趨勢TV-IP551WI和默認設置爲「自動」爲FP​​S,也許5 -15sec程序後,我發現會崩潰,我會得到那個非常錯誤,我也注意到,這是非常生澀,害得我相信fps是不對的。但設置FPS爲固定利率後(不要緊,只是選擇一個,我選20)的錯誤應該消失,它不應該怪人出來了。

0

你可能想嘗試neuralassembly's code for mjpegview作爲一個新的虛擬項目。 這是相同的代碼,但增加了增強功能。 我有那麼同樣的問題,儘自己的代碼一些調整,它的工作原理就像一個魅力。

另外,如果你遇到ndk_project_path = NULL而gradle這個正在建設中,的build.gradle添加下面這段代碼塊的的Android標籤中:

buildTypes { 
    release { 
     runProguard false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
    } 
} 
sourceSets.main { 
    jni.srcDirs = [] 
    jniLibs.srcDir 'src/main' 
} 

希望這有助於其他人。

相關問題