본문 바로가기

분류 전체보기

안드로이드 다운로드매니저 다운로드 실패했는데 뷰어에서 보인다. 게시글에 첨부된 파일들을 리사이클러뷰로 출력해준다. 파일을 누르면 다운로드매니저를 통해 다운로드하고, 뷰어로 연결해서 보여주는 기능을 구현중이다. 그런데 정상 동작하던 코드가 갑자기 안된다. 다운로드가 안된다. 원인을 모르겠다. url은 유효하다. DownloadManager.Request에 setDestinationUri()를 적용하지 않았더니, 다운로드는 여전히 실패하지만 뷰어로 문서가 출력된다. 문서가 다운로드되지 않았는데 ACTION_DOWNLOAD_COMPLETE 분기는 왜 타는거지? 당최 알 수가 없다. 123DownloadManager.Request request = new DownloadManager.Request(uri)// .setDestinationUri(Uri.fromFile(fil.. 더보기
안드로이드 이미지가 돌아갈 때, 회전될 때! Exif 메타정보 이용하기 샤오미 노트와 넥서스 기기에서는 재현되지 않는다. LG G4에서 재현된다. 앨범에 저장된 세로 이미지를 프로필 사진으로 등록하면 90도 회전되는 현상을 겪었다. 솔루션을 요약하자면, 사진의 메타정보(카메라 기종, 시간, 날짜, 방향 등등)를 조회할 수 있는 ExifInterface 클래스가 있다. 이 클래스의 ExifInterface.TAG_ORIENTATION 값이 회전된 각도다. 즉, 저 값이 0이나 null이면 사진이 회전되지 않은것이다. 값이 존재하면 그 값만큼 이미지를 회전시키면 된다. 이미지를 리사이징하기 전에 회전 방어코드를 적용했더니 잘된다. 아래 스택오버플로우 답변으로 한 큐에 해결되었다. http://stackoverflow.com/questions/20478765/how-to-get-.. 더보기
android studio - 포토샵없이 material design의 앱 아이콘 쉽게 만들기 안드로이드 팀장님께서 좋은 정보를 공유해주셨다. 안드로이드 스튜디오에서 제공하는 Asset Studio를 이용해서 런처 앱 아이콘, 액션바 아이콘, 알림 아이콘을 손쉽게 만들고 저장할 수 있다. 포토샵 없이도 어느정도의 퀄리티를 출력할 수 있다. 게다가 안드로이드에서 권고하는 앱 아이콘 정책을 지킬 수 있다. 문서 아이콘 처럼 오른쪽 귀퉁이를 접은 모양도 지정할 수 있다. (Effect > dog ear) 앱 패키지의 리소스 폴더 우클릭 > 뉴 > Image Asset을 클릭한다. Asset Type을 클립아트로 지정하면 material design풍의 아이콘들이 무궁무진하게 제공된다. 패딩, 메인색, 배경색, 아이콘 모양을 커스텀하게 지정할 수 있다. 텍스트로도 아이콘을 만들 수 있다. 내가 좋아하는 .. 더보기
Bitmap 또는 BitmapFactory.decodeFile 이 null을 리턴할 때 프로필 이미지를 등록할 때 리사이징해서 업데이트하려고 한다. 이미지의 용량을 줄이기위해 BitmapFactory.decodeFile(Path, Options) 메서드를 이용했다. 하지만 계속해서 null을 리턴한다. 디버깅을 해봐도 원인을 못찾겠다. 혹시나 Path가 content 스키마라서 그런것일까? "content://media/external/images/media/..." 그렇다!!! sdcard 영역에 저장된 "file://..." Path를 파라미터로 입력해주어야 한다. http://huewu.blog.me/110084637531 위 포스팅에 아주 상세한 설명이 나와있다. 혹시 포스팅 비공개나 삭제될 수도 있으니 원문을 복사해놓아야겠다. 더보기
[다짐] Adapter에 데이터 저장할 때 "업데이트" 까먹지 말자!!! . 더보기
프로필 이미지를 동그랗게 출력하기 유저가 앨범에서 이미지를 선택하면 원형으로 다듬어서 출력해야 한다. 1차 구현- 리소스를 로컬에서 관리함- RoundedBitmapDrawable로 비트맵 리소스 원형 처리 ImageView 위젯에 bitmap 이미지를 출력하는 방법으로 1차 구현을 완료했다. 1234567891011121314 if (resultCode == Activity.RESULT_OK) { if (data != null) { Uri selectedImageUri = data.getData(); try { Bitmap bitmap = MediaStore.Images .Media.getBitmap( getActivity().getContentResolver() , selectedImageUri ); setRoundedProfileI.. 더보기
POST, MIME-Type, Content-Type, multipart, x-www-urlencoded 안드로이드 앱에서 유저의 프로필 이미지를 서버에 업로드하는 API를 구현중이다. 이 API는 POST 방식이고 Content-Type은 x-www-urlencoded 이다. API를 구현하기에 앞서 꼭 알고 있어야하는 지식들에 대해 정리해보았다. MIME-Type과 Content-Type의 관계는 이렇다. 이제 이 모든것의 퍼즐 조각을 맞추면 아래와 같은 맥락이다. 클라이언트와 서버가 있고, HTTP 프로토콜을 통해 request 또는 response를 한다. 이 때 HTTP 프로토콜의 헤더에는 중요한 정보들이 담겨있다. 헤더의 Content-Type을 확인하고 multipart이면 여러 데이터가 있을것이므로 바디를 확인한다. 이 때 여러 데이터를 구분하는 방법은 헤더에 선언된 boundary이다. 학교.. 더보기
API의 content type이 application/x-www-form-urlencoded 일 때 사용자의 프로필 이미지를 서버에 저장해야 한다. raml에서 해당 API를 확인했더니 Content Type이 application/x-www-form-urlencoded 라고 되어있다. 사수님이 꼭 찾아보고 알고 있어야하는것이라고 했다. 구글링을 했더니 일목요연하게 정리된 것은 없다. 하지만 몇가지 단서를 얻을 수 있었다. POST로 데이터를 보낼 때의 표준 MIME type이다.key-value 형태로 인코딩된다.이 Content Type을 사용한다면 body 인코딩을 해야한다. 더보기