내/외장에 저장 된 이미지 파일(PNG or JPEG ...)을 Bitmap으로 읽어 들이는 간단한 코드이다. 이미지 파일을 읽을 때 너무 큰 이미지는 OutOfMemory가 발생한다. 그래서 폰의 화면 해상도에 가장 근접하게 리스케일을 하여 읽어들이게 했다. 코드는 아주 간단하다. /** * 지정한 패스의 파일을 읽어서 Bitmap을 리턴 (화면사이즈에 최다한 맞춰서 리스케일한다.) * * @param context * application context * @param imgFilePath * bitmap file path * @return Bitmap * @throws IOException */public static Bitmap loadBackgroundBitmap(Context context, ..
Android에서 사용하는 이미지는 Bitmap이라는 클래스에서 다~ 알아서 해줍니다. 그리고 이런 Bitmap Object를 쉽게 만들 수 있도록 도와주는 BitmapFactory 클래스 라는 것도 있습니다. BitmapFactory는 여러가지 소스로 부터 Bitmap Object를 만들어 주는 일을 하는데, 전부 static이며 decodeXXX 라는 이름을 가진 메소드들로 이루어져 있습니다.XXX에는 어떤 것으로 부터 decode를 하여 Bitmap Object를 만들어 낼지에 대한 말들이 들어 가겠죠. [Decoding Methods] BitmapFactory.decodeByteArray() 메소드는 Camera.PictureCallback 으로 부터 받은 Jpeg 사진 데이터를 가지고 Bitma..
Bitmap 이미지를 byte[] 로 가져 오거나 byte[] 을 Bitmap 으로 만드는 방법이다. //Bitmap -> Byte[]ByteArrayOutputStream bytearray = new ByteArrayOutputStream();ImageIO.write(image, "png", bytearray);byte[] b = bytearray.toByteArray(); public byte[] bitmapToByteArray( Bitmap bitmap ) { ByteArrayOutputStream stream = new ByteArrayOutputStream() ; bitmap.compress( CompressFormat.JPEG, 100, stream) ; byte[] byteArray = st..
기본이면서 중요한 Handler 다른 쓰레드에서 메인 UI를 건드려야할 때 주로 사용한다. 그 이유는 Main쓰레드가 아닌 다른 쓰레드에서 UI를 건드리면 CalledFromWrongThreadException 에러를 뿜어낸다. 이럴 때 핸들러를 사용하는데 그 방법은 아래와 같다. Handler handle = new Handler() { public void handleMessage(Message msg) { // 코드 처리 } }; 이렇게 일반 메서드와 같이 선언해놓고 호출방법은 handle .sendMessage() 로 호출한다. 간단하고 쉬운 핸들러 사용법
안드로이드 앱을 만들어 본 프로그래머라면 물론 알고 있겠지만, 앱에서 특정 하드웨어를 사용하려면 AndroidManifest.xml 파일 내에 그 내용을 미리 선언해야 한다. AndroidManifest.xml에 관련된 가이드를 꼼꼼히 읽어본 사람이라면 실제 앱을 배포하면서도 별로 헷갈릴 일이 없겠지만, 케냘의 경우에는 슥 훑어보고 uses-permission 태그만 사용하면 되는 줄 알았다가 낭패를 겪었다. 좌우지간 가이드는 꼼꼼히 읽어볼 일이다. 카메라 기능을 기준으로 예를 하나 들어보도록 하겠다. 케냘은 어제 BITNA를 새로 배포하면서 AndroidManifest.xml 파일에 다음과 같은 내용을 추가하였다: ... ... 카메라의 플래시라이트를 사용하는 기능이 추가되었기 때문에 위와 같은 내용을..
private double distance(double lat1, double lon1, double lat2, double lon2) {double theta = lon1 - lon2;double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2))+ Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2))* Math.cos(deg2rad(theta));dist = Math.acos(dist);dist = rad2deg(dist);dist = dist * 60 * 1.1515;dist = dist * 1.609344;return (dist);} private double rad2deg(double rad) {return (..
Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace. Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.에러 해결방법 If you have recently added any Android library project or upgraded to a newer version of Android SDK build tools and you have got an unable to execute error then t..
mWebView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } /** * 웹페이지 로딩이 시작할 때 처리 */ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { } /** * 웹페이지 로딩중 에러가 발생했을때 처리 */ @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { ..