// 절대경로 표시하기위한 것.  private String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath();
	private String mFileimageRoute = Environment.getExternalStorageDirectory().getAbsolutePath();
	
	Button button1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		button1 = (Button) findViewById(R.id.shot_picture);
		button1.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				Toast.makeText(getApplicationContext(), "사진첩을 엽니다", 0).show();
				Intent mIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://media/internal/images/media"));
				startActivity(mIntent);
			}
		});
		mPreview = (Preview) findViewById(R.id.camera_preview);
		mImageData = new byte[6][];
	}
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		if (event.getAction() == MotionEvent.ACTION_DOWN) {
		if (mPreview.mCamera != null) {
			mPreview.mCamera.takePicture(mShutterCallback, mPictureCallbackRaw,
					mPictureCallbackJpeg);
		}
		}
		return false;
	}
	@Override
	protected void onDestroy() {
		if (mPreview != null) {
			Log.e("onDestroy", "onDestroy...");
			if (mPreview.mCamera != null) {
				mPreview.mCamera.stopPreview();
				mPreview.mCamera.release();
				mPreview.mCamera = null;
			}
		}
		super.onDestroy();
	}
		private int getPreFileName() {
		if (sPrefs == null) {
			sPrefs = getSharedPreferences(KEY_POPUP_ENV, Context.MODE_PRIVATE);
		}
		mFileNameYear = sPrefs.getInt(SAVE_FILE_YEAR, 0);
		mFileNameMonth = sPrefs.getInt(SAVE_FILE_MONTH, 0);
		mFileNameDay = sPrefs.getInt(SAVE_FILE_DATE, 0);
		mFileNameCount = sPrefs.getInt(SAVE_FILE_COUNT, 0);
		return mFileNameCount;
	}
	private String getRealFileName() {
		MakeFileName_Demo();
		return mFilename;
	}
	private void MakeFileName_Demo() {
		DecimalFormat decimalFormat = new DecimalFormat("00");
		DecimalFormat NumFormat = new DecimalFormat("0000");
		Calendar rightNow = Calendar.getInstance();
		int year = rightNow.get(Calendar.YEAR) % 100;
		int month = rightNow.get(Calendar.MONTH);
		int date = rightNow.get(Calendar.DATE);
		int num = getPreFileName();
		String result =decimalFormat.format(month) + decimalFormat.format(date);
		
		String FormatNum = NumFormat.format(num);
		mFilename = result + "_" + FormatNum;
		File[] files = new File("content://media/internal/images/media").listFiles();
		if (files.length == 0) {
			num++;
		} else if (files.length > 0) {
			if (CompareDate(year, month, date) == true) {
				num++;
			} else if (CompareDate(year, month, date) == false) {
		
				num = 0;
			}
		}
		SaveFileName(year, month, date, num);// xml에 저장
	}
	private boolean CompareDate(int year, int month, int date) {
		boolean ret = false;
		if (year == getFileNameYear()) {
			if (month == getFileNameMonth()) {
				if (date == getFileNameDay()) {
					ret = true;
				}
			}
		}
		return ret;
	}
	private int getFileNameYear() {
		return mFileNameYear;
	}
	private int getFileNameMonth() {
		return mFileNameMonth;
	}
	private int getFileNameDay() {
		return mFileNameDay;
	}
	private void SaveFileName(int year, int month, int date, int num) {
		// XML에 저장 putInt...
		SharedPreferences.Editor editor = sPrefs.edit();
		// putInt(값을 받을 환경변수 , 값을 얻어오는 인자값)
		editor.putInt(SAVE_FILE_YEAR, year);
		editor.putInt(SAVE_FILE_MONTH, month);
		editor.putInt(SAVE_FILE_DATE, date);
		editor.putInt(SAVE_FILE_COUNT, num);
		editor.commit();// 저장할땐 반드시 commit()을 시킨다.
	}
	public int SaveImage() {
	int ret = 0;
		
			try {
			
				FileOutputStream fileoutstream = new FileOutputStream(mFileimageRoute+getRealFileName()+".jpg");
    			   	
    			fileoutstream.write(mImageData[0]);
    			fileoutstream.close();
    			System.gc();
			}
    			catch (FileNotFoundException fne) 
            	{
            		Log.e("writing and scanning image ", fne.toString());
            		fne.printStackTrace();
            		ret = -1;
                } 
                catch (IOException ioe) 
                {
            		Log.e("writing and scanning image ", ioe.toString());
            		ioe.printStackTrace();
            		ret = -1;
            	} catch (Exception e) 
            	{
            		ret = -1;
            	}	
		return ret;
	}
	Camera.PictureCallback mPictureCallbackRaw = new Camera.PictureCallback() {
		public void onPictureTaken(byte[] data, Camera c) {
			Log.e("mPictureCallbackRaw ", "11111");
		}
	};
	Camera.PictureCallback mPictureCallbackJpeg = new Camera.PictureCallback() {
		public void onPictureTaken(byte[] data, Camera c) {
			Log.e("PictureCallback ", "11111");
			Log.e("PictureCallback ", "22222");
			mImageData[0] = data;
			
			Display defaultDisplay = ((WindowManager) getSystemService(WINDOW_SERVICE))
					.getDefaultDisplay();
			int width = defaultDisplay.getWidth();
			int height = defaultDisplay.getHeight();
			Log.e(String.valueOf(width), String.valueOf(height));
			Log.e(String.valueOf(width), String.valueOf(height));
			Log.e(String.valueOf(width), String.valueOf(height));
		
			ShowSaveDailog();
		}
	};
	Camera.ShutterCallback mShutterCallback = new Camera.ShutterCallback() {
		public void onShutter() {
			Log.i(getClass().getSimpleName(), "SHUTTER CALLBACK");
		}
	};
	Camera.AutoFocusCallback cb = new Camera.AutoFocusCallback() {
		public void onAutoFocus(boolean success, Camera c) {
			Log.e("AutoFocusCallback ", "11111");
			if (success) {
				ToneGenerator tg = new ToneGenerator(
						AudioManager.STREAM_SYSTEM, 100);
				if (tg != null)
					tg.startTone(ToneGenerator.TONE_PROP_BEEP2);
				gFocussed = true;
				try {
					if (gCameraPressed) {
						if (mPreview.mCamera != null) {
							mPreview.mCamera.takePicture(mShutterCallback,
									mPictureCallbackRaw, mPictureCallbackJpeg);
						}
					}
				} catch (Exception e) {
					Log.i("Exc", e.toString());
				}
			} else {
				ToneGenerator tg = new ToneGenerator(
						AudioManager.STREAM_SYSTEM, 100);
				if (tg != null)
					tg.startTone(ToneGenerator.TONE_PROP_BEEP2);
				try {
					if (gCameraPressed) {
						if (mPreview.mCamera != null) {
							mPreview.mCamera.takePicture(mShutterCallback,
									mPictureCallbackRaw, mPictureCallbackJpeg);
						}
					}
				} catch (Exception e) {
					Log.i("Exc", e.toString());
				}
			}
		}
	};
	
	private void ShowSaveDailog() {
		
		Toast.makeText(this, "save image", Toast.LENGTH_SHORT).show();
		SaveImage();
		mImageData[0] = null;
		
		
		if (mPreview.mCamera != null) {
			// mPreview.mCamera.lock();
			try{
			mPreview.mCamera.startPreview();
			}
			catch (Exception e) {
				
			}									
		}	
	}	 
			
	}
	
	이런식으로 작성되어있는 기본 카메라 어플 코드입니다. 
	안드로이드 어플 개발공부를 막 시작한 사람이라서 세세히 설명 부탁드립니다 ㅠㅠ
	 
	테스트 기반은 맥용 이클립스 주노, AVD는 4.0.3 젤리빈으로 하고있습니다.
	 
	사진은 찍는것까지는 되는데 저장이 안되네요. 절대주소값이 잘못된것인지. 뭔가 코딩주소가 잘못된거같은데
	 
	뭐가 문제인지를 잘 모르겠네요 ㅠㅠ
	 
	그리고 색상을 반전시켜서 하고싶은데 어떤 코드가 들어가야 되는지 모르겠네요 찾아봐도 잘 안나오고요ㅠ
	 
	오토포커스 기능을 켰는데 이게 제대로 작동이되는것인지 아닌지 알수가 없어서 문제입니다.
	 
	안드로이드폰이 있어야 테스트 가능한건가요?
	 
	 
	두서없이 질문드려 죄송합니다 ㅠㅠ