분류 전체보기 314

안드로이드 롤리팝 이상에서만 죽는 것

안드로이드가 세상사람들과 친해지기 시작한지 5년 정도 된 것 같다. 그래서 처음 부터 만나왔던 사람들에게도 잘해주려고 안드로이드는 v4, v7등과 같은 라이브러리를 제공하여 최신 API 및 UI를 사용할 수 있게 해주고 있다. 하지만, 이런 라이브러리를 사용할 때는 에러를 쉽게 만난다. 싼게 비지떡? 공짜가 어디있냐? 1. 최신 라이브러리를 이용하여 seekbar, switch 등을 가져와서 레이아웃에도 정확히 만들었고, 코드에서도 ID를 정확히 불러왔다. 2. 그런데 사망하셨다. (롤리팝 이상에서만 죽는다.)java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SwitchCompat...

안드로이드 프래그먼트 탭 생성하기 -viewpager

호랑이가 담배 피우지 않던 시절에는 안드로이드는 탭 호스트라는 것을 사용하여 멀티 화면을 정의해서 썼다고 한다. 그럼 호랑이가 골초가 되어버린 요즘에는 어떻게 탭 효과를 낼까? 방법은 간단한데, 요즘 방식으로 되어있는 글이 없어서 남겨 보도록 한다. 1. 안드로이드 스튜디오에서 새 프로젝트 만들기를 한 뒤 Fragment Tab을 선택한다. 2. 일단 메인 액티비티 하나와 레이아웃이 생성 된다. 3. 메인 액티비티는 탭 안에 담을 프래그먼트를 조정할 수 있고, 레이아웃은 타이틀 및 탭 제목등의 효과를 담당한다. 4. 메인 액티비티는 탭을 조정 하기 때문에 탭에 담길 프래그먼트(Fragment)를 넣어주는 작업을 해야 한다.- File에서 New를 한 뒤 Fragment를 하나 생성한다.- Layout도 ..

안드로이드 error activity class does not exist

안드로이드에서 액티비티를 매니패스트에 추가를 해줬지만 아래와 같은 에러가 나는 경우가 있다. error activity class does not exist 액티비티는 분명히 존재 한다. 파일도 존재 한다. 패키지명도 올바르다. 도데체 뭐가 문제인가? 이럴때 시도 해볼 수 있는 방법 1. Clean Android Studio Project2. 빌드 디렉토리 지우기.3. 안드로이드 스튜디오 재 시작4. 리빌드/실행 안드로이드 스튜디오가 꼬이는 경우 재시작만 해도 되는 경우가 있다. 하지만, 이래도 안된다면? 철자를 잘 살펴 보라! 분명 오타가 있을 지다. 만약 액티비티가 com.comostudio.a.b.activty 인데 android:name="b.activity"라고 적으면? 문제가 없어 보인다? 점..

안드로이드 보안 취약 점 allowBackup - 비밀 정보 쉽게 빼내어 가는 법

기본적으로 android:allowBackup 옵션은 true다. 이 말의 뜻은; 앱이 시스템(OS)의 백업 정책에 참여 하겠다라는 것이다. 즉, 시스템이 백업을 할 때, 이 값이 True로 되어있는 어플리케이션의 Data도 함께 백업 되며 복구 할 때 다시 자동으로 복구 시켜준다. 결국, 폰 리셋을 할 때 어플 백업등을 하면 자동으로 앱의 데이터가 저장된다는 것인데... 여기서 문제가 있다. 만약 사용자의 스마트폰이 자의든 타의든 adb 허용으로 설정이 되어있다면, 누구든지 USB를 연결하여 앱의 데이터를 빼갈 수 있다는 것이다. 사진 zdnet 이것이 무슨 말이냐? 만약 카카오톡이 이 옵션을 true로 해 놓았을 경우.... 누군가가 폰의 설정을 만져서 adb 허용으로 바꾼다면? USB를 꽂아서 카카..

중국 500만 전기차를 위해 법으로 충전시설 정해. 우리나라는?

요즘 폭스바겐 조작으로 자동차 업계가 시끄럽고, 이에 우리나라의 현대/기아차는 이런 특수?를 맞이 하기 위해 더 분주하게 움직이는 모습입니다. 사실 얼마 전까지만 해도 국내차에 대한 불신으로 인해 수입차의 점유율이 엄청나게 올라가고, 해외에서도 사업 부진등으로 인해 참 힘든 시기였는데요, 과연 이번이 그들에게 기회일까요? 그런데 말입니다. 이런 시기에? 중국에선 엄청난? 발표를 했습니다. 2020년 까지 500 만대의 전기차가 중국 대륙을 돌아 다닐 것이고, 이에 대비해서 앞으로는 공공기관등에서는 법적으로 전기차 충전소를 마련 해야만 한답니다. 또한, 새로 짓는 주거 시설이나 비지니스 구역등에서도 반드시 전기 충전 시설을 구비 해야 하며, 공용 주차장에서는 최소 10% 이상의 전기차 전용 공간을 마련 해..

[IT 뉴스]/과학 2015.10.12

[아이폰6S CPU] 삼성이냐 TSMC 이냐에 따라 배터리 성능이 다르다?

애플 아이폰 6s의 CPU 제조사가 누구냐에 따라 배터리 성능이 다를 수 있다는 테스트 결과가 나왔다고 합니다. 엔가젯에 따르면 어떤 테스트에서는 최대 2시간 가량의 성능이 차이가 났는데요... 이에 대해 애플에 문의한 결과 애플은 '둘 다 문제 없다. 당신들이 테스트한 것은 사람들이 일반적으로 쓰지 않는 방법이다. 그렇게 테스트 한 것은 잘 못 되었다. 즉, 기본적인 테스트를 해보면 2~3%의 성능차이가 난다'라고 답변을 보냈다고 하네요. 어찌 되었간에 차이는 있을수 있다는 겁니다. 테스트가 잘 되었든지 안 되었든지에 상관없이 2~3%의 차이가 있으니 사는 지역에서의 삼성과 대만의 TSMC에서 만든 A9프로세스의 차이를 인식하고 클래임을 걸라고 하는 군요. 걸지 않으면 소비자만 피해를 볼거라고 말이죠...

Preference item 클릭 효과 만들기

안드로이드 리스트의 경우에는 간단히 list.setSelector를 해주면 아이템 클릭 효과를 줄 수 있다. 뿐만 아니라 Preference에서도 비슷하게 사용 할 수 있는데, getListView를 한 뒤 리스트처럼 사용하면 아이템 클릭시 효과를 얻을 수 있다. 하지만 언제나 어려운 문제는 발생하는 법. 만약 Preference를 오버라이드(Override)한 다면 어떻게 처리 해야 할까? 오버라이드를 했으니 메인 프리퍼런스 액티비티가 어찌 손을 쓸 수도 없고... 오버라이드한 프리퍼런스에서 getListView를 하기도 그렇고... 그럼 도데체 이 리스트 아이템을 어떻게 가져 올 거냐? 여기 저기 검색을 해봐도 오버라이드 되지 않은 프리퍼런스의 아이템에 대한 얘기 밖에 없다. 그럼... 어차피 새로 ..

AsyncTask를 전역으로 쓰면?

안드로이드 AsyncTask를 전역으로 쓴다면? 즉, 재활용 하겠다는 의미인데 가능 할까? 불가능하다! 만약 한 번 쓴 비동기 태스크를 재 활용 하려고 하면 아래문구를 보게 될 것이다. java.lang.IllegalStateException: Cannot execute task: the task has already been executed (a task can be executed only once) 즉, 변수 이름은 재활용이 가능 하지만 다시 쓰려면 새로 할당을 받으라는 것이다. 당연한 것 아니겠나? 얼음 얼리는 통을 사서 물을 채우고 얼음을 얼려서 먹었는데, 다음 번에 얼음을 먹으려면 당연히 물을 다시 부어서 넣고 기다려야 먹을 수 있지 않겠는가? 그 당시 얼음 통과 얼음은 그 당시의 내 위장 속..

사람과 로봇이 탁구를 한다면?

사람과 로봇이 탁구를 한다면? 사람이 이길 까요? 로봇(omron)이 이길까요? 사실 이런 궁금증 보다는 로봇이 얼마나 잘할 수 있을 지가 더 궁금하지 않나요? 생긴 것이 우주 전쟁에 나오는 외계 로봇 처럼 생겼는데 그 생각을 하면 좀 징그럽기도 하네요. 기술의 발전이 이렇게 빠를 줄은 몰랐네요... 징그럽긴 하지만 조금만 있으면 오락실에서 만날 수 있겠어요! 그럼 탁구치는 모습을 한 번 보죠. via endgadget

[IT 뉴스]/과학 2015.10.10

안드로이드 액티비티 싱글 탑의 비밀

안드로이드 싱글 탑? 한글로 적으니 뭔가 있어 보이기는 하는데.... 싱글탑의 비밀 중 한 개만 얘기 하고 가도록 하겠다.(사실 초보라 아는 것만 얘기 하지만 있어 보이고 싶나보다) 만약 액티비티를 실행 할 때 FLAG_ACTIVITY_SINGLE_TOP과 같은 플래그를 사용 하지 않는다면... 예를 들어 NO_HISTORY와 같은 플래그를 썼다면 돌아 올길이 막막해지는 경우가 있다. 문제1. A액티티비에서 startActivity를 FLAG_ACTIVITY_NO_HISTORY로 실행한 해서 B 액티비티로 갔다.2. B액티비티에서 startAcitivityForResult를 실행 하여 다른 액티비티 C로 이동 하였다. 3. C액티비티 또는 Preference 에서 볼일이 끝났다. 그럼 C 에서는 볼일을 ..