마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

카메라, 크롭 관련 에러가 너무 붙잡습니다 ㅠㅜ

0 추천

안녕하세요.

문제가 너무 여러개가 터져서 원인을 못잡고있습니다..

 

기본로직은

1. 카메라 키기 -> 빈 파일 생성 -> 사진찍기 -> Activity Result -> 크롭 -> 파일 저장(동기화) -> 업로드(Async DoInBack..) -> 웹뷰 조작(Async Post)

2. 앨범 선택 -> 빈 파일 생성 -> 크롭 -> 파일 저장(동기화) -> 업로드(Async DoInBack..) -> 웹뷰 조작(Async Post)

 


문제는 업로드함수에서 new file(path)로 해당 패스를 받아 파일인지 검사하고 업로드해야하는데

로그에는 해당 경로에 파일이 없다고 나옵니다.

매개변수 path값은 다 제대로 전달이 되는데 파일이없다고 나오는 경우가 생기네요..

 

그냥 카메라 키고 저장까지하는걸로 했는데도 동기화가 안될 때가 있습니다.

 

제생각에는 크롭같은경우에는 파일 동기화와 파일업로드를 동시에해서.. 아직 동기화가안됐는데 업로드를 수행하려다보니 파일의 경로를 못찾은 경우(? 이럴수가 있나요?)로밖에는 보이지가않는데 ㅠ

public void galleryAddPic() {
    Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    File f = new File(mCurrentPhotoPath);
    Uri contentUri = Uri.fromFile(f);
    mediaScanIntent.setData(contentUri);
    mContext.sendBroadcast(mediaScanIntent);
    Toast.makeText(mContext, "사진이 앨범에 저장되었습니다.", Toast.LENGTH_SHORT).show();

    if (f.exists()) {
        Toast.makeText(mContext, "사진이 앨범에 있어요.", Toast.LENGTH_SHORT).show();
    }else {
        Toast.makeText(mContext, "사진이 앨범에

 
이로그를 찍으면 사진이 앨범에 없다는 메시지가 나옵니다.

그리고 또한, 동기화가 처음에 제대로 한번 수행되면 다음부턴 문제가 없는 경우가 생깁니다 -__-


 

1. 파일을 동기화하는 함수(sendbroadcast)가 완료되었을 때, 그 결과값을 받고 수행하게 할 수 있나요???

2. 크롭할 때 혹시 파일크기나 이런거 검사하는거 아직도 되고 있나요?? 어쩌면 이 문제일수도 있어서요.



기본적인 외장메모리 접근 권한은 다 수행했습니다..
 

아시는거 조금있으시면 도와주세요(__)

 

겸군님 (1,900 포인트) 님이 2017년 9월 25일 질문
겸군님님이 2017년 9월 25일 수정
시스템이 이렇게 동작하는게 아닐까? 하는 가설을 가지는 것은 좋은 프로그래머가 되는 길을 막는 요소중의 하나입니다.

저 같으면,
mCurrentPath를 로그로 출력할 것입니다.
상기 증상이 사실이라면, 맨처음에 수행시 mCurrentPath에 값이 잘못되었거나, 값이 NullString이거나 둘 중의 하나입니다.

한번은 안되고, 그 다음은 되요. 이런 질문의 대부분은 그 시점의 변수들의 값이 다르기 때문에 발생할 가능성이 90%가 넘습니다.

디버깅이라는 것은 단계별로 순차적으로 수행하면서 해당 기능의 수행시에 변수들의 값을 "관찰" 하는 것입니다.

즉, 좋은 개발자는 좋은 "관찰자"이지, 좋은 예측자가 아닙니다.
예측을 하게 되면, 더 많은 시간을 디버깅하게 됩니다.
편견을 버리고, 단계별로 디버깅을 하면서 변수들의 값을 관찰하거나,
로그를 일일이 찍어서, 제대로 진행되고 있는지 확인하는 것입니다.

느릴 것 같지만, 가장 빠른 방법입니다.

저도 똑같은 경험을 했습니다. 디버깅을 디테일하게 했다면 몇시간만에 잡았을 버그를
예측을 해서 그럴리는 없고 이럴 거야로 시작해서, 일주일이 걸린 경험들 그런 실패를 처절하게 경험하면서 진일보하는 겁니다.
답변감사합니다.

일단 mCurrentPhotoPath는 무조건 값이 들어갑니다. 권한이나 문제는 아닌거같고 파일프로바이더 관련 문제같네요 ㅜㅡ
방향이 안잡혀서 너무 답답했네요

그리고 개인적인 조언 감사합니다 :)

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...