안녕하세요 canvas를 캡쳐해서 갤러리를 넣는걸 하고있는데요.
아래와 같은 에러가 나타나는데 메인 ui스레드말고 무슨 핸들럴를 이용하라고 하는데.. canvas안에서 핸들러를 이용해야하나요
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
public void SaveView(){
CanvasViewAcitivty view = new CanvasViewAcitivty(this,model);
Bitmap b = Bitmap.createBitmap(1080,1080,Bitmap.Config.ARGB_8888);
Canvas c= new Canvas(b);
view.draw(c);
FileOutputStream fos = null;
path3 = Environment.getExternalStorageDirectory().toString() + "/Fancyface/" + System.currentTimeMillis() + "g.png";
File file= new File(path3);
try{
fos = new FileOutputStream(path3);
b.compress(Bitmap.CompressFormat.PNG,100,fos);
fos.close();
setWallpaper(b);
}catch (Exception e){
}
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
}
클래스
public CanvasViewAcitivty(Context context,CharacterModel model){
super(context);
mContext=context;
mModel = model;
res = new Resources();
ujnibitmap = new JniBitmap();
//
mBgColor = getResources().getIntArray(R.array.bg_color);
mFaceColor = getResources().getIntArray(R.array.face_color);
mHairColor = getResources().getIntArray(R.array.hair_color);
mCheekColor = getResources().getIntArray(R.array.cheek_color);
//
bitmap1 = paintBitmap(res.face[mModel.face_index],mFaceColor[mModel.face_color_index]);//
bitmap2 = loadBitmap(res.body[mModel.body_index]);//
bitmap3 = paintBitmap(res.hair[mModel.hair_index],mFaceColor[mModel.heir_color_index]);//
bitmap4 = loadBitmap(res.eye[mModel.eye_index]);/
bitmap5 = loadBitmap(res.eyebrow[mModel.eyebrow_index]);/
bitmap6 = loadBitmap(res.accessory[mModel.accessory_index]);//
bitmap7 = colorChange(res.cheek[0]);//
bitmap8 = loadBitmap(res.mouth[mModel.mouth_index]);/
bitmap9 = loadBitmap(res.glasses[mModel.glasses_index]);//
bitmap10 = loadBitmap(res.balloon[mModel.balloom_index]);//
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint pnt = new Paint();
if(mModel.bg_color_index!=0){
canvas.drawColor(mBgColor[mModel.bg_color_index]);
}
canvas.drawBitmap(bitmap2,0,0,pnt);//
canvas.drawBitmap(bitmap3,0,0,pnt);//
canvas.drawBitmap(bitmap1,0,0,pnt);//
canvas.drawBitmap(bitmap6,0,0,pnt);//
canvas.drawBitmap(bitmap7,0,0,pnt);//
canvas.drawBitmap(bitmap9,0,0,pnt);//
canvas.drawBitmap(bitmap5,0,0,pnt);//
canvas.drawBitmap(bitmap4,0,0,pnt);//
canvas.drawBitmap(bitmap8,0,0,pnt);//
canvas.drawBitmap(bitmap10,0,0,pnt);//
}