ライブ壁紙の学習を始めたばかりで、この小さなものを作りました。
問題は、私のアプリが問題なくコンパイルされることです。
電話で開くと、プレビューに壁紙が表示されますが、「壁紙として設定」をクリックすると、何らかの理由でクラッシュし、フロント画面に戻り、壁紙が黒くなりますが、実行されません。
私の推測では、問題は onDestory() のどこかにある..
public class Strips extends WallpaperService {
private StripsEngine engine;
@Override
public void onCreate() {
super.onCreate();
engine = new StripsEngine();
engine.resume();
}
@Override
public void onDestroy() {
super.onDestroy();
engine.pause();
}
@Override
public Engine onCreateEngine() {
return engine;
}
class StripsEngine extends Engine implements Runnable {
private Thread t = null;
private SurfaceHolder holder;
private boolean clearToRun = false;
private Paint paint = new Paint();
private Paint paint2 = new Paint();
private int frame;
private float endX,endY;
private int height, width;
private Canvas c;
StripsEngine() {
holder = getSurfaceHolder();
paint.setColor(Color.WHITE);
paint.setStrokeWidth(30);
paint.setAntiAlias(true);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStyle(Paint.Style.STROKE);
paint2 = paint;
paint2.setColor(Color.BLACK);
paint2.setStrokeWidth(40);
frame = 0;
}
void drawStrips() {
}
public void run() {
// TODO Auto-generated method stub
while (clearToRun) {
if (!holder.getSurface().isValid()) {
continue;
}
height = 800;
width = 480;
endX = (frame) % (width + 10);
endY = (frame / 3) % (height + 10);
if (endX == 0)
paint.setARGB(255,(int)(Math.random()*255), (int)(Math.random()*255),(int)(Math.random()*255));
if (endY ==0)
paint.setARGB(255,(int)(Math.random()*255), (int)(Math.random()*255),(int)(Math.random()*255));
c = holder.lockCanvas();
c.drawLine(endX-30, endY-10, endX , endY,paint);
c.drawLine(endX-30, endY-10, endX , endY,paint);
holder.unlockCanvasAndPost(c);
frame = frame +2;
}
}
public void pause() {
clearToRun = false;
while (true) {
try {
t.join();
}
catch (InterruptedException e) {
e.printStackTrace();
}
break;
}
t = null;
}
public void resume() {
clearToRun = true;
t = new Thread(this);
t.start();
}
}
}
07-06 17:14:43.869: E/Surface(478): バッファのデキュー エラー (不明なエラー: -19) 07-06 17:14:43.869: E/Surface(478): dequeueBuffer に失敗しました (そのようなデバイスはありません) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): 例外ロック サーフェス 07-06 17:14:43.869: E/BaseSurfaceHolder(478): java.lang.IllegalArgumentException 07-06 17:14:43.869: E /BaseSurfaceHolder(478): android.view.Surface.lockCanvasNative(ネイティブ メソッド) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): android.view.Surface.lockCanvas(Surface.java:288) 07 -06 17:14:43.869: E/BaseSurfaceHolder(478): com.android.internal.view.BaseSurfaceHolder.internalLockCanvas(BaseSurfaceHolder.java:132) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): com.android.internal.view.BaseSurfaceHolder.lockCanvas(BaseSurfaceHolder.java:112) 07-06 17:14:43.869: E/BaseSurfaceHolder(478):com.mendel.strips.Strips$StripsEngine.run(Strips.java:81) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.972: W/dalvikvm(478): threadid=15: キャッチされない例外で終了するスレッド (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478): キャッチされないハンドラー: スレッドキャッチされていない例外 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel. strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.Thread.run(Thread.java:1096) 07-06 17: 14:43.999: I/dalvikvm(478): threadid=7: シグナル 3 07-06 に反応しています 17:14:43.999: E/dalvikvm(478): スタック トレース ファイル '/data/anr/traces.txt を開けません': アクセス拒否Strips$StripsEngine.run(Strips.java:81) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): java.lang.Thread.run(Thread.java:1096) 07-06 17:14: 43.972: W/dalvikvm(478): threadid=15: キャッチされない例外で終了するスレッド (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478): キャッチされないハンドラー: スレッド スレッド 8 がキャッチされないために終了する例外 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): com.mendel.strips.Strips$StripsEngine.run で(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.999: I/dalvikvm (478): threadid=7: シグナル 3 07-06 17:14:43.999 に反応しています: E/dalvikvm(478): スタック トレース ファイル '/data/anr/traces.txt' を開けません: 許可が拒否されましたStrips$StripsEngine.run(Strips.java:81) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): java.lang.Thread.run(Thread.java:1096) 07-06 17:14: 43.972: W/dalvikvm(478): threadid=15: キャッチされない例外で終了するスレッド (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478): キャッチされないハンドラー: スレッド スレッド 8 がキャッチされないために終了する例外 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): com.mendel.strips.Strips$StripsEngine.run で(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.999: I/dalvikvm (478): threadid=7: シグナル 3 07-06 17:14:43.999 に反応しています: E/dalvikvm(478): スタック トレース ファイル '/data/anr/traces.txt' を開けません: 許可が拒否されました81) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.972: W/dalvikvm(478): スレッド ID =15: キャッチされない例外で終了するスレッド (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478): キャッチされないハンドラー: キャッチされない例外が原因でスレッド スレッド 8 が終了する 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 で17:14:43.990: E/AndroidRuntime(478): java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.999: I/dalvikvm(478): threadid=7: に反応シグナル 3 07-06 17:14:43.999: E/dalvikvm(478): スタック トレース ファイル '/data/anr/traces.txt' を開けません: 許可が拒否されました81) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.972: W/dalvikvm(478): スレッド ID =15: キャッチされない例外で終了するスレッド (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478): キャッチされないハンドラー: キャッチされない例外が原因でスレッド スレッド 8 が終了する 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 で17:14:43.990: E/AndroidRuntime(478): java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.999: I/dalvikvm(478): threadid=7: に反応シグナル 3 07-06 17:14:43.999: E/dalvikvm(478): スタック トレース ファイル '/data/anr/traces.txt' を開けません: 許可が拒否されましたjava:1096) 07-06 17:14:43.972: W/dalvikvm(478): threadid=15: キャッチされない例外で終了するスレッド (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478):キャッチされていないハンドラー: キャッチされていない例外が原因で終了するスレッド スレッド 8 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.Thread.run(Thread.java:1096) 07 で-06 17:14:43.999: I/dalvikvm(478): threadid=7: シグナル 3 07-06 17:14:43.999: E/dalvikvm(478): スタック トレース ファイル '/data/anr を開けません/traces.txt': 権限が拒否されましたjava:1096) 07-06 17:14:43.972: W/dalvikvm(478): threadid=15: キャッチされない例外で終了するスレッド (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478):キャッチされていないハンドラー: キャッチされていない例外が原因で終了するスレッド スレッド 8 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.Thread.run(Thread.java:1096) 07 で-06 17:14:43.999: I/dalvikvm(478): threadid=7: シグナル 3 07-06 17:14:43.999: E/dalvikvm(478): スタック トレース ファイル '/data/anr を開けません/traces.txt': 権限が拒否されましたキャッチされていないハンドラー: キャッチされていない例外が原因で終了するスレッド スレッド 8 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.Thread.run(Thread.java:1096) 07 で-06 17:14:43.999: I/dalvikvm(478): threadid=7: シグナル 3 07-06 17:14:43.999: E/dalvikvm(478): スタック トレース ファイル '/data/anr を開けません/traces.txt': 権限が拒否されましたキャッチされていないハンドラー: キャッチされていない例外が原因で終了するスレッド スレッド 8 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.Thread.run(Thread.java:1096) 07 で-06 17:14:43.999: I/dalvikvm(478): threadid=7: シグナル 3 07-06 17:14:43.999: E/dalvikvm(478): スタック トレース ファイル '/data/anr を開けません/traces.txt': 権限が拒否されましたrun(Thread.java:1096) 07-06 17:14:43.999: I/dalvikvm(478): threadid=7: シグナル 3 に反応しています 07-06 17:14:43.999: E/dalvikvm(478): できませんスタック トレース ファイル '/data/anr/traces.txt' を開く: 許可が拒否されましたrun(Thread.java:1096) 07-06 17:14:43.999: I/dalvikvm(478): threadid=7: シグナル 3 に反応しています 07-06 17:14:43.999: E/dalvikvm(478): できませんスタック トレース ファイル '/data/anr/traces.txt' を開く: 許可が拒否されました