안드로이드 프로그래밍[JAVA Code] 27

SMS message : 보내기

안녕하세요. 훈츠 입니다. 취미로 안드로이드 프로그래밍에 대해 하나씩 공부해가면서 재미있게 프로그래밍 하고 있습니다. 먼저 SMS Message는 SDK Version 22 이상 버젼에서는 권한을 얻어야 SMS 를 보내고 받고가 가능 합니다. 이부분 때문에 사실 조금 고생 했습니다. ㅜㅜ 왜냐하면 권한을 얻지 못하면 앱이 그냥 종료가 되어버려서 권한 문제 보다는 코드에 에러가 있는줄 알았습니다. 다른 글들을 많이 참고 했는데 이부분에 대한 설명은 못찾았습니다. 먼저 권한을 얻고 나면 생각보다는 쉽게 메시지를 보내고 받을수 있었습니다. 전 BroadcastReceiver를 통해 메시지를 받고, 받은 내용을 activity로 보내서 다시 메시지를 보냈습니다. 1. Manifests 에 SMS 보내기와 받기 ..

리싸이클러뷰 :

리스트뷰 와 마찬가지로, 리싸이클러뷰 역시 어댑터 객체를 연결시켜줘야 이용 가능합니다. 리스트뷰 보다는 조금더 세팅해줘야 하는 부분들이 있어 단계별로 설명 드려 보겠습니다. 1) build.gradle (Module:app) 리싸이클러뷰 의존성 추가 현재 시점의 최신 버젼 등록 해주시면 됩니다. dependencies { ... implementation 'androidx.recyclerview:recyclerview:1.1.0' } 2) XML 에 recyclerView 추가 하기 : id 와 방향 설정 3) Activity 에서 Recycler 와 adpater 선언, recyclerAdpter 클래스 생성 RecyclerView recycler1; recyclerAdpater adpater; cla..

SQLite : DataBase helper 객체 이용하기

데이터베이스의 버전 업데이트 관리를 위해서 Helper 클래스를 이용하는 방법에 대해 설명 합니다. 헬퍼 클래스를 사용하려면 SQLiteOpenHelper 클래스를 상속해서 Helper 클래스를 만들고, 객체를 만들어서 사용하면 됩니다. 1-1) SQLiteOpenHelper 클래스 만들기 class DatabaseHelper extends SQLiteOpenHelper { } 1-2) onCreate() 메소드 , onUpgrade 메소드 implement 실행하기 @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersio..

SQLite : Database 강좌

안드로이드에서는 Sharedpreference 말고, SQLite가 내장되어있어 간단하게 데이터베이스를 구성하여 저장하고 쉽게 조회 할수가 있습니다. 여기서 모바일 데이트 베이스를 만들고, 그안에 테이블을 만들어 저장하고, 조회하는 기능에 대해 설명 하겠습니다. 데이터베이스를 검색해보니, 현재 안드로이드에 내장되어있는 SQLite 말고도 아주 많은 데이터베이스 프로그램이 있었습니다. 하지만 안드로이드에서 데이터베이스 구성하는 방법들에 대해서만 기술해 보도록 하겠습니다. 1) 데이터 베이스 만들기 : database = openOrCreateDatabase( name, MODE_PRIVATE, null ); public void createDatabase(String name){ println( "crea..

Intent : intent 생성 및 화면 전환 사용법

안드로이드 앱의 기본 구조는 화면과 레이아웃이다. 그리고 화면은 액티비티로 만든다. 그 위에 XML 파일로 작성한 레이아웃을 올리고 소스 코드를 이용하여 이벤트를 처리한다. 화면간 전환 하는 방법을 기록 한다. 1) 화면 간 전환 방법 = Intent 생성 : (getApplicationContext(), MenuActivity.class) 해당하는 Activity.class 를 해주고 startActivity해 주면 된다. public class MainActivity extends AppCompatActivity { Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceS..

Fragment : Adapter 에서 View 에 대한 정리

Fragment 에서 XML 파일을 부분화면으로 혹은 전체 화면으로 붙이기 위해서 Inflation 이라는 작업을 거쳐야 하는데 adapter나 기타 View 를 붙여넣어야 하는 경우에 View 를 return 하는 Java 파일을 만들어서 붙이는데 헷갈려서 정리하기 위해서 기록 한다. 현재 까지 이해하고 있는 범위는 adapter 같이 view 를 돌려 받아야 하는 경우에만 추가로 view를 리턴 받을수 있는 View 자바 파일을 만들고 이용하면 된다. 1) View 자바 파일 코드 : 최상위 붙일 Layout 을 상속한다. inflation 작업하고, 접근 할수있는 set 메소드를 만든다. public class SingerItemView extends LinearLayout { ImageView i..

Fragment : Activity 에서 부분화면 inflation 하는 방법

부분화면을 Activity에 붙이는 코드가 헷갈려서 정리 해본다. 기본적으로 XML 에 있는 데이터를 JAVA 코드에서 사용하려면 Inflation 이라는 메모리화 작업이 필요하다는것을 이해했다. 하지만 Fragment에서 inflation 할때와 Activity에서 Inflation 할때 약간의 코드가 다르다. 다음 코드를 보면 명확히 기억 할수 있을것이다. 1) XML 파일 2) Activity 에서 inflation 하는 코드 public class MainActivity extends AppCompatActivity { FrameLayout container; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate..

Thread - AsyncTask

Thread 에서 핸들러를 사용해보면 코드가 조금 복잡해 보이는데, 안드로이드에서는 핸들러를 사용하지 않고 좀더 간단하게 작업하는 방법도 있다. AsyncTask 클래스를 상속하여 새로운 클래스를 만들면 그 안에 스레드를 위한 코드와 UI 접근 코드를 한꺼번에 넣을 수있다. 따라서 스레드로 처리 해야 하는 코드를 하나의 AsyncTask 클래스로 정의 할수 있다는 장점이 생긴다. 예를 들어, 웹서버에서 고객 이름을 가져오는 작업과 웹서버에서 제품이름을 가져오는 작업을 서로 다른 코드로 분리시키고 싶다면 두개의 AsyncTask 상속 클래스를 만든 후 각각의 코드를 넣으면 된다. AsyncTaks 객체를 만들고 execute() 메서드를 실행하면 이 객체는 정의된 백그라운드 작업을 수행하고 필요한 경우에 ..

Thread : 루퍼 를 이용한 message 보내기

핸들러 기능은 새로 만든 스레드에서 메인 스레드로 메시지를 전달하는 것이었습니다. 반대로 메인 스레드에서 별도의 새로만든 스레드에 메시지를 전달하는 방법이 필요 할때가 있다. 이를 위해 메인 스레드에서 변수를 선언 하고 별도의 스레드가 그값을 읽어가는 방법을 사용할 수도 있다. 하지만 별도의 스레드가 관리하는 동일한 객체를 여러 스레드가 접근할때는 별도의 스레드 안에 들어있는 메시지 큐를 이용해 순서대로 접근 하도록 만들어야 한다. 마치 메인스레드가 처리하는 것처럼 말이다. 루퍼는 메시지 큐에 들어오는 메시지를 지속적으로 보면서 하나씩 처리하게 된다. 메인 스레드는 UI 객체들을 처리하기 위해 메시지 큐와 루퍼를 사용한다. 그러나 별도의 스레드를 새로 만들었을 때는 루퍼가 없다 따라서 메인 스레드나 다른..

Thread : Runnable & post AlertDialog 박스

,핸들러를 사용해서 메시지를 보내면 조금 코드가 복잡하게 보이는 단점이 있어, 이보다 조금더 간단한 방법인 Runnable 객체를 실행 시키는 법에 대해 기술 해보겠다. 핸들러 클래스는 메시지 전송 방법 이외에 Runnable 객체를 실행 시킬수있는 방법을 제공 한다. 즉 Runnable 객체를 핸들러의 post() 메서드로 전달해주면 이 객체에 정의된 run()메서드 안의 코드들은 메인 스레드에서 실행 된다. 한마디로 별도의 핸들러 정의 할 필요 없이 Handler 객체 만들고, 만든 userThread 안에서 hander.post( new Runnable ) 하면 별도의 핸들러 없이 바로 메인 UI 접근이 가능하다. 1) hander.post( new Runnable )코드 public class M..