반응형

프로그램/안드로이드 38

알서포트의 모비즌 프로그램을 PC에 설치하면, 안드로이드 VM (AVD ) 가 안돌아간다.

말그대로임.나처럼 삽질하는 사람이 없기를. 상황 설명을 하자면 이러하다. 1. 스마트폰에 모비즌 설치.2. PC에서 모비즌 설치.3. 가입 등 기본적인 절차 진행.4. 모비즌 프로그램 실행.5. PC에서 제어 가능 확인.6. 프로그램 종료 후 , PC에서 이클립스 실행.7. 이클립스에서 AVD실행.8. 무한로딩. 이거 대충 보니까, 모비즌 PC프로그램과 앱쪽 프로그램이, 안드로이드의 디버그 모드를 통해 서로 통신하는 듯 하다.그러기에, 막상 이클립스에서 AVD 와 통신하려 하면 , 이미 모비즌 프로그램이 안드로이드 쪽 채널을 점유하고 있어서, 통신이 안 되는 것 같다. 왜그런지는 모르지만 이런 경우 , 1. 심지어 모비즌 프로그램을 제거하거나 2. 컴퓨터를 재부팅 하더라도 해당 현상 - 이클립스 실행해도..

SQLite 에서, insert() 의 반환값은 lastInsertId() 와 같은 역할을 한다.

결론부터 말하면 그러하다. 자세한건 아래를 참고. https://www.sqlite.org/c3ref/last_insert_rowid.html 상황 설명을 하자면 이러하다.1. 안드로이드에서 SQLite 를 쓰는데, 2. insert 를 한 후에 last inserted id 가 필요했다. 많이 있는 패턴이잖아?3. 그런데, sqlite 는 lastInsertedID() 가 없...어서 만들어서 써야됨. 그런데, lastInsertedID() 를 뒤져보다 보니, sqlite 소스에서, db.insert() 후의 리턴값을 바로 lastInsertedID() 처럼 사용하는 코드를 봤다. 예를 들면 이런식. public int DBLayerFoo1(){....return db.insert();....} pub..

안드로이드에서 SQLite 를 사용할 때, SQLiteOpenHelper 의 onCreate()는, 앱 설치할 때 최초 한번만 실행된다.

[ 새로운 짤방이다. 신선하다. ] 한두시간 정도 별별 로그를 다 찍고 삽질을 하다가, 인터넷 찾아보고 알게 된 거다.그러니까... 보통 안드로이드에서 객체가 생성될때는, Constructor 나 onCreate() 를 거치잖아.그런데 SqLiteOpenHelper() 는 onCreate() 에 아무리 로그를 박아 넣어 봐도, 안 거치는 거다.이게 웃긴게... 혹시나 해서 생성자( Constructor ) 에 박아 넣은 로그는 잘 나오는데, onCreate() 에 넣은거만 안 나왔다. 맨첨엔 내가 무슨 코드를 잘 못 짠 줄 알고 엄청 고민했는데, 뭔가 이상해서 검토해 보니, onCreate() 가 실행되는 조건은 1. getWritableDatabase() 혹은 getWritableDatabase() 가..

안드로이드 + sqlite 에서, long 은 integer 로 동작한다.

그렇다네? 동적으로 byte를 할당하나 보다. 자세한건 언제나 진리인 stackoverflow 를 참고하자 -> http://stackoverflow.com/questions/8672473/is-there-type-long-in-android-sql 원래 하려고 했던게, 1. datetime 을 DB로 다뤄야 하는데2. sqlite 사용.3. sqlite 는 text base 이기 때문에 ASCII 타입 이외의 데이터가 좀 애매하지??4. datetime -> unixtime 으로 변경해 다루기로 결정.5. unixtime이 long 이 걸린다. 6. 검색7. stackoverflow 님께서 답변. 그러하다.

안드로이드에서 카메라 지정할 때, 카메라가 1개일때랑 2개일때랑 다르다.

코드 짜면서 "어? 이거 카메라 두개면 어쩌지?" 하고 생각했는데,바로 터졌다. 혹시 Android Camera 관련 코드 짜다가. camera.open() 이후에 바로 NullPointerException 나오는 사람은 아래의 글을 읽어볼 것. 1. 안드로이드 카메라는, Camera camera1 = Camera.open(); 과 같은 코드로 카메라 장비에 대해 자원 할당을 요청한다. 2. 근데... 카메라 두개면 어쩌냐? 알아서 할당해줌??요즘은 카메라가 앞 / 뒤 둘 다 달렸잖아.그럼, 저 카메라가 주는 Camera 가 앞 카메라인지, 뒷 카메라인지 어찌 아누? 3. 안드로이드 4.1.2 에서는, 3.1. 카메라가 1개일 때는 Camera.open(); 으로 할당 3.2. 카메라가 2개일 때는, C..

뭬라? 이클립스의 appcompat 디렉토리를 지웠단 말이더냐?

내가 그랬다... -_-;;;; X 될 뻔 했음. 복구법을 알려주마. 1. 상황 :안드로이드를 이클립스로 개발하면, 프로젝트 만들 때 appcompat_v7_X 하는 디렉토리가 생긴다.2. 이거 내가 안쓰는 건데 자동으로 생겨서 3. 어느날 지워버림.4. Warning 과 Error 가 강물처럼 흘러넘치게 되었다. 뒤져보니까 저 디렉토리가 괜히 생긴게 아니라는군.Wizard 로 Android Project 생성하면 자동 생성되는 부분( 테마 , Start Activity 등 ) 이 있는데, 거기에 쓰이는 라이브러리라고 함. 즉, 지우면 X 됨. [ 이런 짤이 있다니... -_-;;; ] 복구는 일단... 아래의 링크를 보고 이야기하자. http://chanyhan.tistory.com/entry/andr..

이클립스에서 폰 디버깅이 안 될 때.

업무상 여러 폰을 테스트하는데, 가끔 저런 황당할 때가 있다. 처음엔 해결책을 몰라서 버벅댔는데, 지금은 대충 보인다. 고로 기록해 놓는다. 상황 : 이클립스에서 Run 버튼이나 Debug 버튼을 실행해도, 프로그램이 폰에서 실행되지 않고 AVM( 안드로이드 가상 머신 ) 에서만 실행되는 경우. 해결 :1. 너님의 폰이 데스크톱 PC에서 인식되는지 봐라.-> 이클립스도 결국 PC 위에서 돌아가는지라, PC 자체가 폰을 인식하지 못하면 이클립스가 아니라 이클립스 할아버지라도 안된다. 보통 스마트폰은 PC에 꼽으면 바로 인식된다. 고로, 해당 인식 화면 자체가 안나오거나, PC의 파일탐색기를 실행시켜도 스마트폰이 탐색기에 안 뜬 다면, PC가 너님 핸폰 자체를 Detect 못 하고 있는거임. 이 경우, 해당..

Android 에서, 문자 발송 성공/실패 처리.

일반적으로 Android 에서 문자( SMS )를 전송할 때는 SMS 객체를 쓴다. 대충 코드로 설명하면 android.telephony.SmsManager sms = android.telephony.SmsManager.getDefault();sms.sendTextMessage( 상대방전번문자열, null, 보낼문자문자열, sentPI, deliverPI ); 뭐 이런식인데 ( 자세한건 "안드로이드 SMS객체" 나 위의 함수로 검색하면 예제 다 나온다 ) 안드로이드에서 문자를 전송하기 위해서는, 일종의 callback 함수를 등록해 줘야 한다. 문자 전송이 비동기( 정확하게는 Pending - Intent ) 로 이루어지다 보니, 전송 결과를 처리할 함수 - OnSMSSendSuccess(), OnSMS..

안드로이드에서 다이얼로그를 중첩해서 쓸 수 있을까? 화면 진행은 중단될까?

말 그대로다. 이거 잘 몰라서 테스트 코드로 검증해 봤는데, 다른 사람들도 아리까리 할 거 같아서 글로 남김. 상황은 이러하다. 1. Android 의 AlertDialog 를 실행하면, 사용자가 "닫기" 를 누르지 않아도, 백단( backEnd) 프로그램이 계속 돌아갈까?2. AlertDialog 를 여러개 띄울 수 있는거임? 코드는 별거없다. 그냥 테스트 수준. public void Popup( String _msg ){ AlertDialog.Builder builder = new AlertDialog.Builder( getBaseContext() ); builder.setPositiveButton( "확인", new DialogInterface.OnClickListener() {// @Overrid..

안드로이드 - @SuppressLint(“NewApi”) annotation

안드로이드 프로그램을 하다가, 이클립스에서 @SuppressLint(“NewApi”) 혹은 @SuppressLint(“Activity”) 관련 경고를 보낼 때가 있다.앞뒤를 몰라서 조금 당황했는데, 그리 어려운 게 아니라서 기록으로 남긴다. 1. "Lint" 라는 건 원래 오류 보정해 주는 툴, 라이브러리 같은거다. 주로 컴파일 타임에서 오류를 미리 예측해 사용자에게 알려주는 스타일이다. 쉽게말해 "에러날지, 경고로 끝나고 돌아가기는 할 지, 실행은 되다가 중간부터 에러날지" 는 모른다는 것. ( 사실은 알 수도 있는데, 그게 중요한 건 아니고 ) 포인트는 "오류의 가능성이 있는 코드 부분을 알려주는 툴 혹은 시스템" 정도. 2. Suppress 는 영어로 "억압하다" 정도의 뜻이다. 조합하면 감 나오지..

반응형