2013-07-22 2 views
0

신생아입니다. 나는 안드로이드 전화를 사용하여 사진을 찍고 그 사진을 Sqlite 데이터베이스에 저장하는 응용 프로그램을 만들었습니다. 그러나이 코드는 실행되고 있지 않습니다. 프로그램에서 오류를 찾을 수 없습니다. 도와주세요.카메라를 사용하여 사진을 찍어 sqlite 데이터베이스에 저장하십시오.

public class MainActivity extends Activity { 

    private static final int CAMERA_REQUEST = 0; 
    public ImageView imageView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     imageView =(ImageView) findViewById(R.id.image); 
     Button B = (Button) this.findViewById(R.id.camera); 

     B.setOnClickListener(new View.OnClickListener(){ 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(cameraIntent, CAMERA_REQUEST); 
      } 

     }); 

    } 


    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      ImageHelper help= new ImageHelper(this); 
      if (requestCode == CAMERA_REQUEST) { 
       Bitmap photo = (Bitmap) data.getExtras().get("data"); 
       imageView.setImageBitmap(photo); 
       ByteArrayOutputStream out=new ByteArrayOutputStream(); 
       photo.compress(Bitmap.CompressFormat.PNG,100,out); 
       byte ByteArr[]=out.toByteArray(); 
       help.insert(ByteArr); 
      } 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

데이터베이스 코드

public class ImageHelper extends SQLiteOpenHelper { 


private static final String DATABASE_NAME="image"; 
private static final int DATABASE_VERSION=1; 

public ImageHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    db.execSQL("CREATE TABLE Image(_id INTEGER PRIMARY KEY AUTOINCREMENT,imageblob BLOB);"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 

} 

public Cursor getAll() {        
    return(getReadableDatabase().rawQuery("SELECT imageblob FROM Image",null)); 
}  

public void insert(byte Byte[]){ 
    ContentValues cv=new ContentValues(); 
    cv.put("imageblob",Byte); 
    Log.e("inserted","inserted"); 
    getWritableDatabase().insert("image","imageblob",cv); 

} 


public byte[] getImage(Cursor c) 
{ 
    return(c.getBlob(1)); 
} 
} 

답변

1

로그 캣으로 말할 쉬울 것 ... 오류가 무엇입니까?

그것은 문제가 아니지만 당신이 이미지 URI를 문자열로 sqlite 데이터베이스에 바이트 배열 대신 저장하는 것이 좋습니다.

 String path = Images.Media.insertImage(getContentResolver(), ImageInByte, 
       "title", null); 

     Uri imageUri = Uri.parse(path); 

     String uriString = uriMyLogo.toString() ; 

그리고

   Uri imageUri = Uri.parse(uriString); 

       Bitmap image = null; 
       try { 
        image = Media.getBitmap(this.getContentResolver(), imageUri); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
URI

에서 이미지를 얻을 수 :

는 바이트 배열에서 URI를 얻으려면
관련 문제