0
저는 라이브 벽지를 만들고 있는데, 사용자의 휴대 전화 화면의 크기로 축소 된 fullHD 해상도의 비트 맵을 가지고 있습니다. 그것은 안드로이드 2.2 및 2.3 완벽하게 작동하지만 4.0에서 충돌합니다.SurfaceView : Android 4.0에서 dequeueBuffer가 실패했습니다.
편집 :
내가 시도/캐치를 사용하여 약간의 문제를 좁혀하고 내 run() 메소드에서 시작 알게되었습니다. 그 맥가이버의 수정 프로그램은 다음과 같은 오류 메시지가 홍수 약 20 초를 실행 한 후 충돌 :
여기05-31 20:01:22.590: E/SurfaceTextureClient(1475): dequeueBuffer failed (No such device)
05-31 20:01:22.590: E/BaseSurfaceHolder(1475): Exception locking surface
05-31 20:01:22.590: E/BaseSurfaceHolder(1475): java.lang.IllegalArgumentException
05-31 20:01:22.590: E/BaseSurfaceHolder(1475): at android.view.Surface.lockCanvasNative(Native Method)
05-31 20:01:22.590: E/BaseSurfaceHolder(1475): at android.view.Surface.lockCanvas(Surface.java:76)
05-31 20:01:22.590: E/BaseSurfaceHolder(1475): at com.android.internal.view.BaseSurfaceHolder.internalLockCanvas(BaseSurfaceHolder.java:184)
05-31 20:01:22.590: E/BaseSurfaceHolder(1475): at com.android.internal.view.BaseSurfaceHolder.lockCanvas(BaseSurfaceHolder.java:157)
05-31 20:01:22.590: E/BaseSurfaceHolder(1475): at com.pelkkala.test.TestWall$TestMachine.run(TestWall.java:255)
05-31 20:01:22.590: E/BaseSurfaceHolder(1475): at java.lang.Thread.run(Thread.java:856)
05-31 20:01:22.601: E/ERROR(1475): ERROR IN CODE: java.lang.NullPointerException
05-31 20:01:22.621: W/System.err(1475): java.lang.NullPointerException
05-31 20:01:22.621: W/System.err(1475): at com.pelkkala.test.TestWall$TestMachine.draw(TestWall.java:233)
05-31 20:01:22.636: W/System.err(1475): at com.pelkkala.test.TestWall$TestMachine.run(TestWall.java:264)
05-31 20:01:22.636: W/System.err(1475): at java.lang.Thread.run(Thread.java:856)
내 실행() 메소드 :
public void run() {
while (running) {
//perform canvas drawing
if (!holder.getSurface().isValid()) {
continue;
}
mTimer = System.currentTimeMillis();
if (mTimer - oldTime > 50) {
oldTime = mTimer;
try {
Canvas c = holder.lockCanvas();
if (!touching) {
oscillate(xOrig, yOrig);
}
if (!touching2) {
oscillate2(xOrig2, yOrig2);
}
draw(c);
holder.unlockCanvasAndPost(c);
}
catch (Exception e) {
Log.e("ERROR", "ERROR IN CODE: " + e.toString());
e.printStackTrace();
}
}
}
}
편집 2 :
수 에뮬레이터와 관련이 있습니까? 지금 당장 Android 4 기기에 액세스 할 수 없습니다.