Android 갤러리 contentResolver query시 DATE_TAKEN 및 DATE_ADD가 제대로 들어있지 않은 문제가 발생.
이슈 발생은 : 폰을 변경하거나 이미지를 옮겨서 가져온 경우에 발생하는 것 같다.
이것저것 가져와서 로그를 찍어보니
date_taken, date_add, date_modified 등 DATE format으로 보니 1970년 1월로 찍혔습니다.
(사진에 따라 day 값이 좀더 포함된 경우가 있음.)
기존 로직에서 1970/01/30 보다 작을 경우에는 파일의 lastModified날짜를 가져와서 sort시켜줬는데
나중에 리스트 insert가 다되고 notifychanged하는 부분에서 사진들의 정렬이 바뀌어 문제가 생겼다.
검색하다보니
DATE_TAKEN 칼럼이 Api level 29에 추가됐다고 표기되어 있는걸로 보아 29버전으로 바뀌면서 무언가 변경이 있었던 것 같다.
라는 글을 보았지만 실제 나의 상황은 date_taken에도 들어오는 경우도 있음.(이 문제는 아닌것 같음)
https://velog.io/@seoon53/Android-MediaStore-DATETAKEN-column-return-0
카톡에서도 보니 카톡도 제대로 정렬이 되어 있지는 않았다.(문제되는 폴더)
그래서 일단 contentResolver로는 제대로 정렬을 하기 어려울 것 같아서
sort하는 부분에 조건을 여러개 걸어서 쿼리해 가져오도록 하였다.
val sort = MediaStore.MediaColumns.DATE_TAKEN + " DESC, " +
MediaStore.MediaColumns.DATE_ADDED + " DESC, " +
MediaStore.MediaColumns._ID + " DESC"
아! 그리고 보다보니
contentResolver.query로 이미지를 여러개 가져오는데 화면을 빠져나가도 while문이 계속돌아서
isFinish값 처리도 같이 해주었다.
지금 상황에선 최선의 방법인것 같았다.
혹시 좋은 방법이나 해결법 있으시면 댓글로 알려주시면 감사하겠습니다!!
'안드로이드' 카테고리의 다른 글
delay 혹은 애니메이션 후 이벤트 발생시 binding에러 (0) | 2023.05.19 |
---|---|
OS 6이하에서 벡터 이미지 제대로 안나오는 문제 (0) | 2023.05.11 |
안드로이드 에뮬레이터 먹통이 되었을 때 (0) | 2023.04.25 |
[Android] 푸시 원하는 화면이동 parentActivityName (0) | 2023.04.19 |
웹뷰 shouldOverrideUrlLoading 호출되지 않을 때. (0) | 2023.04.04 |