말 그대로입니다. 카메라로 사진을 찍잖아요? 근데 문제는 저장될 때 회전되서 저장된다는 겁니다.

그 이유를 곰곰히 생각해보니깐 제가 manifest에다가 android:screenOrientation="landscape"

이걸 해줘서 그런가 생각했습니다.

도대체 어떻게 해야할까요?

PictureCallback mPicture = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {

// 외장메모리의 경로를 찾고 /kwyCamera라는 문자열을 더함.
String a = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/kwyCamera";

// 저장할 이미지의 이름을 나타내느 변수로서 년월일-시분초.jpg로 나타냄.
// Calender.MONTH에서 1월은 0의 값을 가지기에 +1을 해줌.
Calendar calendar = Calendar.getInstance();
String fileName = String.format("%02d%02d%02d_%02d%02d%02d.jpg",
calendar.get(Calendar.YEAR) % 100,
calendar.get(Calendar.MONTH) + 1,
calendar.get(Calendar.DAY_OF_MONTH),
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
calendar.get(Calendar.SECOND));

String path = a + "/" + fileName;

File file = new File(a);
try {
if (!file.exists()) {
// 파일이 존재하지 않으면 만듬
file.mkdirs();
}
FileOutputStream fos = new FileOutputStream(path);
fos.write(data);
fos.flush();
fos.close();
} catch (Exception e) {
Toast.makeText(MyCameraActivity.this,"Error : " + e.getMessage(), 0).show();
return;
}

Toast.makeText(MyCameraActivity.this, fileName, Toast.LENGTH_SHORT).show();

// 스캐닝 요청
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.parse("file://" + path);
intent.setData(uri);
sendBroadcast(intent);

mPreview.getCamera().startPreview();
}
};

위 소스는 사진을 찍었을 때 수행되는 메소드를 여기저기에서 짜깁기한 코드입니다.

문제는 fos.write를 하기 전에 해당 데이터에 어떻게 접근을 하나요?

접근을 해야지 이미지를 변경할 수 있을 텐데... 파라미터로 오는 byte[] data 이부분이 실제로는

사진의 데이터 정보가 오는건가요?

그리고 또 질문이 있는데요

이미지 저장을 년월일_시분초로 저장을 하는데

갤러리에 들어가서 보면 제일 처음 찍은게 제일 처음 나오니까 맨날

아랫쪽까지 내려야 하는 불편함이 있던데

최근 사진이 위로 오게 정렬되게 하는 방법은 없나요?

메소드 있을것 같은데...