안녕하세요 박스여우입니다. 최근들어 안드로이드 개발을 꾸준히 못하고 있어서 많이 잊어먹은게 많은것 같습니다. 얼마전에 후배가 dp와 px의 차이점이 뭐냐는 질문에 멘붕이 오고야 말았습니다.. 분명 1학년 전공프로젝트 발표때 전교생앞에서 발표했던 내용이었지만 기억이 나질 않았습니다.. 그래서 앞으로는 다시 공부를 열심히 해보도록 하겠습니다. ■ DP - Device Independence Pixel안드로이드에서 px을 사용하게되면 말그대로 px단위로 레이아웃을 구성하게되어 다양한 크기의 스마트폰의 해상도에따라 UI가 천차 만별이 됩니다. 그래서 android에서 만들어낸 단위가 dp(dpi)입니다. 우선 dp를 다루기전에 dpi라는 단위부터 짚고 넘어가야 할것 같습니다. dpi는 dots per inch로..
안녕하세요 박스여우입니다. 최근 언론사의 웹사이트와 앱을 제작중인데요, 언론사 애플리케이션 특성상 기사마다 이미지가 반드시 하나쯤은 있고, 그 기사들과 이미지들을 불러와 화면에 뿌려줘야 합니다. 하지만, 많은 이미지를 다루다 보니 [dalvikvm-heap: Out of memory on a 772812-byte allocation] 요런 에러, Out Of Memory - OOM이 발생하더군요 ■ 메모리 정리? 원인은 Android 상에서 제공되는 메모리(heap)는 정해저 있지만, 제가 많은 이미지를 사용한 관계로 메모리가 부족한 상황이 발생한 것입니다. 이 때, 메모리를 정리한답시고 사용하지 않는 객체에 null을 지정해 준다고 한들 해당 객체의 메모리가 정리되는게 아니고 정리될 후보가 되는것 입니..
안녕하세요 박스여우입니다.이번에는 카카오톡을 통해 링크와 이미지를 공유하는 방법에 대해 알아보겠습니다. ■ Kakao Developer저희가 사용할 API는 카카오톡에서 제공해 주는 카카오링크 입니다. 카카오링크를 사용하기 위해서는 KakaoDeveloper 로 이동하여 API를 사용할 앱을 등록해야 합니다. 앱 만들기를 클릭하고 등록할 앱의 이름을 입력한 뒤 Create 버튼을 눌러 주세요. 이 때 이름은 자유롭게 적어주시면 됩니다. 그 다음으로 일반>플랫폼>플랫폼 추가 버튼을 눌러 정확한 앱의 정보를 등록합니다. 이번 포스팅에서는 안드로이드를 기준으로 진행하겠습니다. 해당 애플리케이션의 패키지명을 입력하신 뒤 추가 버튼을 누르시면 됩니다. 그럼 이처럼 키 해시 입력란이 비게 되는데요, 키 해시에는 해..
안녕하세요 박스여우입니다.이번에는 ScrollView의 스크롤이 바닥에 닿았을때, 스크롤 뷰의 내용이 모두 보여졌을때 새로운 게시글을 로드하기 위한 이벤트를 발생시키는 방법에 대해 소개해 드리고자 합니다. ■ ScrollView 바닥에 닿았을 때 이벤트여러가지 방법이 있지만 저는 Custom ScrollView를 만드는 방법으로 해결하였습니다. 핵심코드123456789101112131415161718 private void checkIsLocatedAtFooter() { if (rect == null) { rect = new Rect(); //사각형을 그려주는 Rect 클래스 - 현재 보이는 화면의 사각형 getLocalVisibleRect(rect); //현재 view의 절대 위치를 rect에 적용 r..
안녕하세요 박스여우입니다. 이번에는 아래 사진과 같이 자신의 앱에 전면 광고를 다는 방법을 알아보겠습니다. 먼저 AdMob에 접속! 수익올리기 -> 자신의 앱을 선택한 뒤에 새 광고단위를 만듭시다. 만약 등록된 앱이 없을 경우 앱을 새로 등록한 뒤에 진행하셔야 합니다. 그리고 여러 광고에 대한 설정을 하시고 이름을 정해줍시다. 참고로 저는 동영상 광고는 데이터 관련 불만을 방지하기 위해 사용하지 않겠습니다. 새로운 광고가 만들어졌습니다. 광고를 사용하기 위해서 단위ID를 복사 합시다! 복사한 광고 ID를 자신의 안드로이드 프로젝트에 가서 valuse - strings에 String을 만들어 붙여넣어 줍시다. 1 private InterstitialAd interstitialAd;cs 그리고, 전면 광고를..
안녕하세요 박스여우입니다. 약 2달전쯤에 DSM 알리미 앱이 강제종료 된다는 문의가 자주 있었습니다.오류를 문의하는 사람들의 한가지 특징이 안드로이드 6.0 환경이였습니다. 원인파악을 해보니 안드로이드 6.0버전부터는 보안이 강화되어(?) 기존에 manifest에 퍼미션을 등록하는 방식이 다르게 바뀌었더군요 그래서 오늘은 이미 해결했지만 늦게나마 안드로이드 6.0 버전 이상에서 퍼미션을 얻는 방법을 알아보겠습니다.■ Android 6.0 / API Level 23안드로이드 6.0버전 이하에서는 Manifest에 사용하고자 하는 퍼미션을 등록하면 자유롭게 사용이 가능했습니다. 하지만 안드로이드 6.0버전 이상부터는 코드 동작중에 필요한 퍼미션들을 허용받는 런타임 권한 모델을 사용해야 합니다. 런타임 권한 ..
Lock Screen 위에 Activity 띄우기 요즘 맡고 있는 프로젝트가 관련이 있어서 잠금화면 - LockScreen에 대한 포스팅만 쓰게 되네요 이번에는 캐시슬라이드와 같은 돈버는 어플처럼 LockScreen위에 Activity를 띄우는 방법을 알아보겠습니다. 1getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);cs 코드는 아주 간단한데요, 엑티비티가 생성되었을 때 바로 잠금화면 위로 올리고 싶다면 onCreate메소드 안에넣으시고 그 외에는 적절히 사용하시면 됩니다. 잡담 요즘은 앱보다는 웹을 더 많이 다루고 있는 듯 합니다. 안드로이드도 IOS지원문제 때문에 웹 기반과 WebGL을 통해 UI를 그리는 Fuse를 다뤄보..
안녕하세요 박스여우입니다. 얼마전인 4월 초에 열렸었던 마이크로소프트 커뮤니티에 방문하여 여러 커뮤니티를 만났고, 여러가지 세션을 통해 인공지능, 네트워킹 등 여러가지를 배웠습니다. 하지만 저에게 가장 도움이 되었던 것은 Sencha 커뮤니티 대표님을 만나 이야기를 나누었던 점 입니다. 앱개발자로 여러가지 앱을 개발해 보았고 앞으로도 개발할 예정이지만, 앱 컨텐츠를 생산해 낼때 가장 마음에 걸리는 것이 플랫폼 문제였습니다. 안드로이드, IOS 뿐만 아니라 앞으로 계속해서 나오는 플랫폼도 대비할 필요가 있습니다. 그런 걱정을 크로스 플랫폼을 제공해주는 Sencha를 통해 해결해 보고자 여러가지 대화를 나누어 봤지만, Sencha는 이제 더이상 모바일 플렛폼에서는 좋지 못하다는 말씀을 해주셨습니다. 그래서 ..
안녕하세요 박스여우입니다.새롭게 맡은 프로젝트에서 기존 기기의 잠금화면 말고 앱 자체의 잠금화면 기능이 필요했는데요, 홈키나 멀티테스킹 키를 막는게 가장 골치아팠습니다. 그래서 구글링을 해 본 결과 좋은 오픈소스가 있어서 소개해 드리고자 합니다. HomeKeyLocker.class 생성1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162import android.app.Activity;import android.app.AlertDialog;import android.os.Bundle;import android.view.Gravity;import andr..
안녕하세요 박스여우입니다.오늘은 안드로이드 에서 Cache를 사용하는 방법에 대해 알아보겠습니다. ■ 캐시(Cache) 란?캐시는 웹브라우저의 쿠키와 비슷한 느낌으로 데이터를 임시로 저장해 두는 장소를 말합니다. 앱을 만들어 서비스를 할 때 접속정보나 아이디 기억 등과 같은 굳이 서버에 저장할 필요가 없거나 서버에 저장하기 어려운 정보나 데이터들을 해결하기 위해 사용자의 기기에 저장해야 하는데, 이를 위해 READ,WRITE_EXTERNAL_STORAGE 퍼미션을 받아서 파일을 다루기는 좀 그렇고 해서! 저는 이를 캐시를 통해 해결했습니다. 캐시는 스토리지 접근 읽기 쓰기 퍼미션을 받지 않아도 파일을 다룰 수 있습니다. ■ 캐시(Cache) 사용하기 123456789101112131415161718192..