[Android] calling ui thread from worker thread Method compress must be called from the worker thread, currently inferred thread is UI thread less... (Ctrl+F1) Inspection info:Ensures that a method which expects to be called on a specific thread, is actually called from that thread. For example, calls on methods in widgets should always be made on the UI thread 위와 같이 View와 같은 Class내에서 Bitmap Comp..
안드로이드 앱을 만들 때 가장 많이 하는 일 중에 하나가 사진을 찍어서 올리거나 인터넷에 있는 사진을 받아다 사용자에게 보여주는 일입니다. 스마트폰이 가진 중요한 기능 중의 하나가 카메라가 내장되어 있다는 것이고 이것이 인터넷과 연결되어 다른 사용자들에게 쉽게 공유할 수 있다는 것이기 때문이죠. 그래서 모바일 앱의 주요 컨텐츠 생산이나 소비 형태도 사진으로 많이 이루어져 있습니다.안드로이드 개발자 공식 사이트에서도 상당히 앞쪽 부분에 사진을 다루는 비트맵에 대한 트레이닝 세션을 만들어 놓았습니다. 공부차 공식 사이트의 내용을 간단히 추려서 옮겨 봅니다. 원문과 샘플코드 다운로드는 Displaying Bitmaps Efficiently에서 보실 수 있습니다. 출처: 안드로이드 개발 사이트(http://de..
[Intro] Android에서 사용하는 이미지는 Bitmap이라는 클래스에서 다~ 알아서 해줍니다. 그리고 이런 Bitmap Object를 쉽게 만들 수 있도록 도와주는 BitmapFactory 클래스 라는 것도 있습니다. BitmapFactory는 여러가지 소스로 부터 Bitmap Object를 만들어 주는 일을 하는데, 전부 static이며 decodeXXX 라는 이름을 가진 메소드들로 이루어져 있습니다.XXX에는 어떤 것으로 부터 decode를 하여 Bitmap Object를 만들어 낼지에 대한 말들이 들어 가겠죠. [Decoding Methods] BitmapFactory.decodeByteArray() 메소드는 Camera.PictureCallback 으로 부터 받은 Jpeg 사진 데이터를 가..
안드로이드 앱을 만들때 배경이미지를 넣어야 하는 경우 OutOfMemoryError에 직면하는 경우가 많다.. 특히 사이즈가 큰 배경이미지 일수록... 자주 발생한다... 즉, OutOfMemoryError는 이름처럼 이미지를 로딩할때 메모리가 부족해서 발생하는것이다... 이럴경우 그원인이 되는 이미지 사이즈 자체를 줄이거나 로딩할때 아래와 같이 사이즈를 줄여서 불러오면 일단 해결은 된다. BitmapFactory.Options options = new BitmapFactory.Options();options.inSampleSize = 2; Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.opening, options); 하..
리소스 접근시 여러가지 방법이 있겠지만 Bitmap testImg = BitmapFactory.decodeResource(res, R.drawable.testRes0); 이런식으로 파일 ID로 리소스를 읽어와 사용하고 있었습니다. 그런데 리소스가 많을 경우 testImg = new Bitmap[10]; for(int i = 0; i < 10; i++) testImg[i] = BitmapFactory.decodeResource(res, R.drawable.testRes0+i); 이런식으로 ID로 연산을 하여 읽어오다보면 ID가 꼬이는 경우 문제가 발생할 여지가 많더군요. 파일명이 순차적으로 되어 있다고 하더라도 이런식의 접근은 안좋은 방법인것으로 알고 있습니다. 이럴경우 int tmpID; testImg ..