投稿からデモを実装しました: Android and MJPEG
しかし、しばらくするとアプリケーションで常にエラーが発生し、例外が発生しました。
java.lang.IllegalArgumentException: Invalid Unicode sequence: illegal character
class の次のコード内MjpegViewThread:
public void run() {
開始 = System.currentTimeMillis();
PorterDuffXfermode モード = 新しい PorterDuffXfermode(PorterDuff.Mode.DST_OVER);
ビットマップ bm;
int 幅;
整数の高さ;
Rect destRect;
キャンバス c = null;
ペイント p = 新しいペイント();
文字列 fps = "";
while (mRun)
{
if(表面完了)
{
試す
{
c = mSurfaceHolder.lockCanvas();
同期 (mSurfaceHolder)
{
試す
{
bm = mIn.readMjpegFrame();
destRect = destRect(bm.getWidth(),bm.getHeight());
c.drawColor(Color.BLACK);
c.drawBitmap(bm, null, destRect, p);
if(showFps) {
p.setXfermode(モード);
if(ovl != null) {
高さ = ((ovlPos & 1) == 1) ? destRect.top : destRect.bottom-ovl.getHeight();
幅 = ((ovlPos & 8) == 8) ? destRect.left : destRect.right -ovl.getWidth();
c.drawBitmap(ovl, width, height, null);
}
p.setXfermode(null);
フレームカウンター++;
if((System.currentTimeMillis() - 開始) >= 1000) {
fps = String.valueOf(frameCounter)+"fps";
フレームカウンター = 0;
開始 = System.currentTimeMillis();
ovl = makeFpsOverlay(overlayPaint, fps);
}
}
}
キャッチ (IOException e)
{
Log.i(TAG, "エラー: "+e);
}
}
}
キャッチ (例外 e)
{
Log.i(TAG, "エラー: "+e);
}
最後に
{
もし (c != null)
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
次の LogCat 情報が役立つかどうかはわかりません。
09-27 17:06:36.645: D/dalvikvm(10120): threadid=9: 元に戻した後も中断されています (sc=1 dc=1)
09-27 17:06:46.745: D/dalvikvm(10120): GC_EXTERNAL_ALLOC は 132K を解放し、47% は 2998K/5575K を解放し、外部は 1625K/2137K を一時停止しました。
09-27 17:06:46.825: D/dalvikvm(10120): GC_EXTERNAL_ALLOC 解放 65K、47% 解放 2997K/5639K、外部 2227K/2779K、一時停止 27ms
09-27 17:06:46.955: D/dalvikvm(10120): GC_EXTERNAL_ALLOC 解放 127K、48% 解放 2997K/5703K、外部 2827K/2827K、一時停止 40ms
09-27 17:06:47.385: D/dalvikvm(10120): GC_EXTERNAL_ALLOC 解放 142K、48% 解放 3000K/5703K、外部 2827K/2827K、一時停止 31ms
09-27 17:06:47.515: D/dalvikvm(10120): GC_EXTERNAL_ALLOC 解放 131K、48% 解放 2997K/5703K、外部 2827K/2827K、一時停止 27ms
09-27 17:06:47.615: D/dalvikvm(10120): GC_EXTERNAL_ALLOC 解放 127K、48% 解放 2997K/5703K、外部 2827K/2827K、一時停止 31ms
誰でもこの問題を解決する手がかりを教えてもらえますか?