2012-06-10 81 views
0

我想將我的畫布狀態保存到我的SD卡或手機圖庫,這對我來說並不重要。 IHAVE下面這些代碼,並點擊屏幕時,文件被保存在SD卡,但作爲一個無法識別的文件,就像一個感嘆號警告標誌PIC是不可用保存畫布後,圖片不可用

代碼:

package your.save.namespace; 
import android.app.Activity; 
import android.os.Bundle; 
import java.io.FileOutputStream; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.Toast; 
public class testSaveView extends Activity 
{ 
     SomeView sv = null; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     sv = new SomeView(this); 
     setContentView(sv); 
    } 
    @Override 
    public boolean onTouchEvent(MotionEvent event) 
    { 
    int type=event.getAction(); 
    Log.i(null,"GOOOD"); 
    if(type==MotionEvent.ACTION_DOWN) 
     { 

         if (sv != null) 
         { 
           Log.i(null,"GOOOD"); 
           saveView(sv); 
           return true; 

         } 
         Log.i(null,"GOOOD"); 
     } 
    return true; 
    } 
    private void saveView(View view) 
    { 
     Log.i(null,"GOOOD"); 
     Log.i(null,"hii"+view.getWidth()+"hello"+view.getHeight()); 
     Bitmap b = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); 
     Canvas c = new Canvas(b); 
     view.draw(c); 
     FileOutputStream fos = null; 
     try { 
       fos = new FileOutputStream("/sdcard/some_view_image_" + System.currentTimeMillis() + ".png"); 
       Toast.makeText(null, "Saved", Toast.LENGTH_LONG).show(); 
       Log.i(null,"GOOOD"); 

       if (fos != null) 
       { 
        Log.i(null,"GOOOD!!!!!!!"); 

         b.compress(Bitmap.CompressFormat.PNG, 100, fos); 
         fos.close(); 
       } 
       setWallpaper(b); 
      } catch(Exception e) 
         { 
         Log.e("testSaveView", "Exception: " + e.toString()); 
         } 
    } 
class SomeView extends View 
{ 
     public SomeView(Context context) 
     { 
      super(context); 
     } 
     public void onDraw(Canvas canvas) 
     { 
       canvas.drawARGB(0x80, 0xff, 0, 0); 
       Paint paint = new Paint(); 
       paint.setColor(Color.BLUE); 
       paint.setTextSize(48); 
       canvas.drawText("...Some view...", 10, canvas.getHeight()/2, 
paint); 
     } 
} 
} 

也許問題是明顯:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="your.save.namespace" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
      <activity android:name=".testSaveView" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category 
android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="3" /> 
<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission> 
</manifest> 

回答

0
<uses-sdk > repeat 2 times 3 & 10 remove any 1 

您需要訪問SD卡使用許可

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />