본문 바로가기
♣ 사과나무 심는 마음으로..

iOS 폐강으로 듣게 된 안드로이드 앱 개발 교육

by FloralPig 2016. 6. 3.

김은옥 강사 과목을 전에 XML이나 HTML5를 들었을텐데...

항상 명쾌한 강의가 맘에 들었다.

약간 오따꾸라고나 할까????

앱 개발을 위해서는 더 많은 노력이 필요할 듯...  3일은 택도 없다.


ㅇ 기간 : 2016.06.01 ~06.03

ㅇ 장소 : 서울시 인재개발원 데이터센터

ㅇ 강사 : 김은옥(probemeia@gmail.com)

ㅇ 교육목표 : 간단한 앱 작성을 통해 개발 및 유지 보수 방법을 습득

ㅇ 교재 : 러닝 안드로이드 스튜디오(후카세 요시마사)



애플리케이션의 종류
-PC에서 실행되는 프로그램 : 데스크탑 애플리케이션(앱)
  예)한글, 엑셀, 파워포인트 등등

-스마트 기기 실행 되는 프로그램: 모바일 앱
  안드로이드 플랫폼: 안드로이드 앱 ->java로 개발 <-네이티브언어
  iOS플랫폼: iOS앱 -> object-c <-네이티브언어
   =>네이티브 앱 : 네이티브 언어로 개발한 모바일 앱

-웹 브라우저에서 실행되는 프로그램 : 웹 사이트(웹 앱)
  =>반응형 웹
  -> html :웹사이트 만드는 언어
 스마트기기 전용 웹사이트 :모바일웹앱(html) --->안드로이드 앱
                                                       ↑ 
                                      Cordova(크로스 플랫폼 프레임워크)
                                      =>이렇게 개발된 안드로이드 앱을 하이브리드 앱이라 함

앱을 개발시 필요한 데이터를 제공하는 사이트
=>공공 빅데이터 제공 사이트
-공공데이터포털(행정자치부 운영) :www.data.go.kr 
-서울 열린 데이터 광장: data.seoul.go.kr 

안드로이드 폰 권장 백신
-새로운 앱이 설치되면 자동으로 실행되어서 악성코드 체크
-매주 전체 악성코드 검색, 스마트폰 환경설정
[CM security]- 주요 앱에 개별적으로 비밀번호 설정, 최적화 <-무료
[Antivirus]- 주요 앱에 개별적으로 비밀번호 설정, 최적화 <-유료


1.안드로이드 개요

안드로이드 앱: 안드로이드 플랫폼에서 실행
  -안드로이드 폰에서 실행되는 프로그램(애플리케이션)
- 누구나 무료로 개발가능
- 구글플레이 스토어에 등록해서 전세계적으로 배포 가능. 
=>참고: 구글 플레이 스토어에 앱 등록하려면 개발자 등록이 필수 <-$25/평생

 * iOS앱:iOS가 플랫폼(설치된 운영체제)에서 실행.-아이폰에서 실행되는 프로그램

* 안드로이 앱 개발 최저버전: 권장 4.0.3
=> 개발한 앱이 실행되는 최저버전
=> 최저버전부터 최신버전까지 실행되는 앱이 개발 됨
   - 개발시 개발툴로 통합개발환경 : 빌드 자동화
=>빌드: 컴파일, 파일배치 등등을 프로그램 실행에 필요한 형태로 변경


2.개발환경구축 - 안드로이드 스튜디오 기반
: 앱을 만들기위한 프로그램 설치
-앱을 만들기위한 프로그램 : 안드로이드 스튜디오
-안드로이드 앱 개발에 필요한 선수프로그램:자바
-ADB : 스마트기기로 앱 실행을 하게 해줌. ADB드라이버(안드로이드 드라이버) 필요 <- 설치


(1)JDK(Java Development Kit, 자바개발킷):자바
   :자바기반의 애플케이션(자바프로젝트, JSP웹사이트, 안드로이드 앱) 개발, 이클립스사용, 

    빅데이터에서 한글 텍스트마이닝(KoNLP패키지에 자바가 필요)

1)JDK 다운로드 : 최신버전 권장
  -다운로드 사이트 http://www.oracle.com/technetwork/java/javase/downloads/index.html

    주의)Windows운영체제의 경우 다운로드받는 파일이 다름
          - Windows 32bit(XP, Vista, Window7 32bit)인 경우 : [Windows x86]항목의 [jdk-8u업데이트버전-

             windows-i586.exe]을 클릭.
          - Windows 64bit(Vista 64bit 또는 Window7 64bit)인 경우: [jdk-8u업데이트버전-windows-x64.exe]을 클릭

   설치 경로 C:\Program Files\Java\jdk1.8.0_92\bin

2)환경변수 설정
   - 자바명령어의 위치를 시스템에 알려주는 작업




PATH  .............. 편집
;C:\Program Files\Java\jdk1.8.0_92\bin;

CLASSPATH  .............. 새로 만들기
.;C:\Program Files\Java\jdk1.8.0_92\lib\tools.jar

JAVA_HOME  .............. 새로 만들기
C:\Program Files\Java\jdk1.8.0_92


3)설정 확인 
cmd창에서 javac, java명령어 실행



(2)안드로이드 스튜디오 설치 - 안드로이드 앱 개발에 사용하는 프로그램
1) 안드로이드 스튜디오 다운로드 - 최신버전 
-다운로드 사이트
http://developer.android.com/sdk/index.html

2) 안드로이드 스튜디오 설치





5packages 설치 --- 나머지는 선택 해제.




        1. Android SDK License / 2. Intel Android Extra License 각각 동의 후 Install


-안드로이드 SDK : 안드로이드 앱 개발 공통환경
-안드로이드 플랫폼 툴 : 버전별 개발환경
예)버전별 개발환경을 최신버전 설치하면
->최소버전(4.0.3)부터 최신버전(예:6.0)에서 실행되는 앱을 개발할 수 있음 



(3)첫번째 프로젝트 작성: 프로젝트명- HelloWorld
1) 프로젝트 작성
    project name : HelloWorld
    company domain : seoul.go.kr
    project location : 설정시 -c:\project
   보여질때 - c:\project\HelloWorld

(4)안드로이드 스튜디오 작업환경 설정
  1) 워크스페이스 : 프로젝트 관리 폴더    예)c:\project



=====> 결과 새로운 Project 생성 "HelloWorld"


2) 환경설정
  ■ 에디터뷰에 라인번호
     ① [File]-[Settings] - [Editor]-[Appearance]
     ② [Show line numbers]항목 체크 후 [Apply]버튼 또는 [OK]버튼 클릭
  ■ 폰트조정
     ① [File]-[Settings] - [Editor]-[Colors & Font]
     ② [Save As]버튼을 눌러 myFont입력 후 [OK]버튼 클릭
     ③ [Editor]-[Colors & Font]-[Font]에서 [Scheme name]항목에서 myFont선택 후 글꼴 조정 후 [Apply]버튼 또는   

        [OK]버튼 클릭




(4)AVD작성 및 실행 : 가상 디바이스인 AVD(Android Virtual Device) 작성 및 실행. 
    ->AVD는 안드로이드 애플리케이션을 실행(테스트)하기 위한 가상 디바이스.

1) AVD 작성 
   ① 안드로이드 스튜디오에서 [Tools]-[Android]-[AVD Manager]

       기존 Nexus 디바이스 삭제
   ② [Android Virtual Devices]창에서 [Create Virtual Device...]버튼 클릭
   ③ [3.2HVGA]선택 후 [Next]버튼 클릭
   ④ [System image]에서 에뮬레이터의 안드로이드 운영체제 버전([Intel x86 Emulator) 선택 후 [Next]버튼 클릭
   ⑤ [Verify Configuration]에서 [AVD Name]항목에 testPhone6.0.x를 입력 후 [Show Advanced Setting]버튼 눌러 

      RAM을 256으로 변경 후 [Finish]버튼 클릭


 기존 기기 삭제






2) AVD 실행
   ① 생성된 [testPhone6.0.x]에뮬레이터의 [Actions]항목에서 [Launch this AVD in the Emulator]버튼 클릭. 
   ② 에뮬레이터가 기동되면, 일반 스마트 폰처럼 사용. 
      주의: 기동 시 시간이 많이 걸리므로, 에뮬레이터는 닫지 않고 그냥 실행시켜 둔다.


    초록 삼각형으로 실행 ---manager 창 닫기


   GOT-IT 버튼 클릭



(5) 작성한 프로젝트 실행 : 디버그 버전 실행 
    ->디버그 버전 : 개발중인 테스트 버전
    -[Run]-[Run app]메뉴
     - 실행할 디바이스 또는 애뮬레이터를 선택 후 [OK]버튼 클릭

  메뉴판에 실행 버튼(초록 삼각형) 클릭 가상폰 두 번 클릭하면 실행내용이 아래에 스크롤






핸드폰에 어플 설치하기


 1. 휴대폰 개발모드로 설정

       환경설정 휴대폰 정보-빌드번호

                                                –  개발 ===> USB 디버깅 체크

                         또는 응용프로그램

 

 2. 폰 인식(USB 연결확인 - 케이블 연결 후 해당 버튼 클릭


  



  3. 실행버튼(초록 삼각) 에뮬레이터가 아닌 기기 선택

 

      *** 에러 시 : Enable ADB Intergration 이 항상 체크되어 있어야 한다. (방화벽에 의해 수시로 끊길 수 있음. )


   *** 빨간 네모 눌러야 다시 에뮬레이터 또는 기기로 갈 수 있음.





� 닫기



(6) 작성한 프로젝트 실행 : 릴리즈 버전 실행 

     -> 릴리즈 버전 : 개발이 완료된 배포버전. 구글플레이 스토어에도 등록 가능
     -> 릴리즈버전 배포: APK파일 생성
        -APK파일: 안드로이드 앱 설치 파일


1) APK파일 작성

    - [keystore]폴더 생성 : APK파일 저장소


    - [Build]-[Generate Signed APK...]메뉴
    - [Generate Signed APK Wizard] 창에서 [Create new...]버튼 클릭.


    - [Key store path]의 [...]을 눌러 [keystore]폴더 선택, [file name]에 HelloWorld 입력 후[OK]버튼 클릭
    - 나머지 값 입력 후 [OK]버튼 클릭
    - [Next]버튼


    - [APK Destination Folder]에 [keystore]폴더 선택, [Build Type]에 [release]선택 후
    [Finish]버튼 클릭


    -[keystore]폴더에 app-release.apk 파일이 생성됨. 


    이 파일을 HelloWord.apk로 변경해서사용


2) 릴리즈 버전 실행 
주의 사항: 디버그버전이 설치되어 있는 경우 제거
-안드로이드 기기로 직접 HelloWord.apk 복사 후 설치


*** 쉽게 배포하기

   1. debugging 앱 삭제 ... 기존에 있다면

   2. c:\keystore HelloWorld.apk를 폰 USB를 통해 배포

   3. 폰에 keystore 디렉토리 생성 후 HelloWorld.apk 복사->실행

     * USB 안되는 경우 데이터USB이지 확인 (충전 전용 USB는 연결 안됨)

     * “프로그램 설치관리자사용

     * 마켓 통해 구입 안할 경우 보안 에러 뜸 ->환경설정-응용프로그램-알 수 없는 소스 허용에 체크


(6) APK파일 배포
  1) 기관서버에 등록 :FTP프로그램을 사용
  2) 구글플레이 스토어에 앱 등록
   순서: 구글계정 -> 개발자 등록 -> 앱 등록
         ①구글 계정 필요. 구글계정이 없으면 생성
         ②선수작업 개발자 등록 : https://play.google.com/apps/publish 
         ③개발자를 등록한 경우: https://play.google.com/apps/publish 에 로그인해서 개발한 앱을 등록


strings는 필요한 변수를 정의한다.


 






리소스 ID : R.java에서 변수로 자동 생성--- 편집 불가능

“+” 리소스 정의

“+” 없는 것은 참조

* R.java가 로직과 리소스 연결/중간 역할





layout resource 참조

 

 

id resource 참조



method name


실습 : 문자열 2개, 이미지 1개 띠우기


1. 위젯에서 Large Text, Medium Text, Image View 끌어 놓는다.


2. strings.xml 항목 편집




3. drawable 디렉토리에 원하는 이미지를 복사한다. : "Copy" 메뉴 사용 또는 내컴퓨터에서


java-MainActivity에서 package확인 가능






4.  imageView 속성은 "src"에 g_img01 링크

     textView 속성dms "text"에...




====> 결과

 


실습 : 버튼 만들기

1. 위젯에서 버튼끌어 놓는다.

2. id에 "end_btn" 입력



2. strings.xml에 "end_lbl"을 생성하고 "종료"를 입력


3. java-...-MainActivity에 코딩   *****  코딩 위치 중요 : Button 액션 내에 코딩  *** 직접 입력하지 말고 자동 완성 이용



  Button endBtn = (Button) findViewById(R.id.end_btn);

  endBtn.setOnClickListener(new View.OnClickListener(){      <----  Implement methods 실행

     @Override

     Public void onClick(View v){

        finish();

     }

   });



**** Implement methods 실행

     




3.애플리케이션 작성 기초 지식
 - 안드로이드 애플리케이션 개발시 로직, 리소스, 매니페스트를 구분해서 작성

* 리소스와 로직을 분리하면 좋은 점
  - 문자열 변경시 로직을 변경할 필요 없음 
  - 여러곳에서 재사용이 가능
  - 여러 언어를 지원하는 애플리케이션 작성에 유용
사용방법: [values-언어로케일코드]
언어로케일코드- ko(한국),ja(일본),zh(중국)...
예)영어지원(기본값)-[values], 한국어지원- [values-ko]

(1) 안드로이드 앱 개발의 3요소
- 로직 : .java파일- [java]폴더
- 리소스 : 로직을 뺀 모든 파일 - [res], [assets]
           화면, 문자열, 이미지, 동영상,..
- 매니페스트 : 안드로이드 앱 환경설정 파일 - [manifests]
                 화면의 수, 권한설정,..
      => AndroidManifest.xml

    안드로이드 앱 개발 순서
     1. 기본 프로젝트를 작성후 실행 - 앱의 기동 상태
     2. 앱의 내용이될 것을 작성

(2)안드로이드 애플리케이션의 주요파일
   1) 리소스파일: [res]
      문자열, 이미지, 오디오, 동영상 등등의 파일

      *리소스 만듦(정의)-[res]
       - 문자열:[res]-[values] : strings.xml에 <string>태그를 추가
         예) <string name="hello">Hello</string>
       - 이미지:[res]-[drawable]
       - 비디오,오디오, XML, JSON:[res]-[raw] : 특정 폴더에 위치
          예) 이미지위치- [drawable]
              비디오,오디오위치-[raw] 


       - 레이아웃(화면의 내용) : [res]-[layout]
         xml파일로 정의. [layout]폴더에 위치

       - ID(뷰이름) : @+id/아이디이름
       - 뷰 : 버튼, 콤보상자, 입력란...

     * 리소스 참조
       - 리소스에서 리소스 참조 : @리소스종류/리소스명
               예)레이아웃 리소스에서 문자열 리소스 a1참조 : @string/a1
       -로직에서 리소스 참조: R.리소스종류.리소스명
               예)로직(액티비티)에서 activity_main.xml 레이아웃 리소스 : R.layout.activity_main
               예)로직(액티비티)에서 name1 ID 리소스 : R.id.name1
       - 패키지명: 도메인명+프로젝트명
       - 이미지파일명: 소문자,_,숫자만 사용. 확장자는 png권장  

   2) 레이아웃 리소스 파일: [res]-[layout]
      화면의 구조 및 내용을 설계

content_main.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android

 //XML 이름공간

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"                                                                   //Wrap_content : 요소 크기에 맞게

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:context="kr.go.seoul.helloworld2.MainActivity"

tools:showIn="@layout/activity_main">

 

<TextView                                                                                                                            // 문자 표시

android:layout_width="wrap_content"                                                                                  //android 생략 못함.

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceLarge"

android:text="@string/g_title_01"

android:id="@+id/textView"

android:layout_centerHorizontal="true" />

 

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceSmall"

android:text="@string/g_title_02"

android:id="@+id/textView2"

android:layout_alignParentBottom="true"

android:layout_alignRight="@+id/textView"

android:layout_alignEnd="@+id/textView"

android:layout_marginBottom="181dp" />

 

<ImageView                                                                                                                        // 이미지 표시

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageView"

android:src="@drawable/g_img01"

android:layout_below="@+id/textView"

android:layout_above="@+id/textView2" />

</RelativeLayout> 



   3) 액티비티 클래스 파일: [java]-[패키지명]
      화면 표시, 이벤트 처리하는 안드로이드 애플리케이션 로직



// ********* 필요한 라이브러리

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.view.Menu;

import android.view.MenuItem;

 

public class MainActivity extends AppCompatActivity {                                                          //부모 AppCompatActivity

//title bar 제거 extends Activity

 

@Override

protected void onCreate(Bundle savedInstanceState) {

//onCreate : Activity 생성 시 자동 실행

super.onCreate(savedInstanceState);

//필수! override재정의 : 실행에 필요한 처리

setContentView(R.layout.activity_main);

//필수! 화면의 내용 표시 : 액티비티 위에 layout 결정

//content_main.xml 사용자가 작성하여 activity_main.xml(편집 안됨)을 정의

 

// 아래부터 이벤트

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

 

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

핑크 똥그라미

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

}

 

/// 실제 코딩 위치

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present. 쩜 세개

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

 

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

 

//noinspection SimplifiableIfStatement

if (id == R.id.action_settings) {

return true;

}

 

return super.onOptionsItemSelected(item);

}

} 


   4) 매니페스트 파일 : [manifest]

      애플리케이션의 기본설정, 권한 설정 등을 기술

   5) 추가리소스 [assets]
      - [res]와 동등레벨로 폴더 생성
         -> [project]보기에서 [app]-[main]에 생성
      - 사용방법: 일반 파일로 접근해서 사용
      - 해당 파일 : 동영상, 폰트(ttf), html, js, css, xml, json, 미리 생성한 SQLite db(db를 읽어 들일 때 사용), 이미지파일         (이미지 파일이 지정되지 않아 리소스를 할당받기 어려운 경우 )

main에 디렉토리 : assets 생성


    * 안드로이드 스튜디오로 프로젝트 부르기
    -[File]-[Open]--불러올 프로젝트 선택
    - 필요한 플랫폼 툴이나 고칠 그래들 빌드가 있는 경우 에러가 표시됨. 

      <-해결방법: 에러메시지 다음에 표시되는 링크 클릭

4.사용자 인터페이스 - 화면 내용을 구성하고 배치
 순서: 레이아웃 작성 -> 레이아웃에 뷰 추가
  (1) 레이아웃 : 뷰를 배치하는 공간. 화면의 내용  

  (2) 뷰 :버튼, 입력상자, 리스트...
    -> 이벤트가 발생하고 로직에의해 제어됨

  (3)화면의 내용 작성 방법
     1) XML 레이아웃 리소스 - 정형화된 구조
        => 기관앱 <-형태 구조를 만들 수 있음 
     2) View 클래스 사용 - 비정형화 구조
        => 게임 <-형태 구조를 만들 수 없음

   4개의 핵심 컴포넌트
      -액티비티(Activity) - 하나의 화면을 제공
      -서비스(Service) - 백그라운드 동작 애플리케이션
      -브로드캐스트 리시버(Broadcast receiver) - 수신 컴포넌트
      -컨텐트 프로바이더(Content provider) - 데이터 공유 관리


5. 액티비티 - 화면을 표현, 화면의 내용에서 발생한 이벤트 제어
   (1) 작성방법 : 액티비티의 상속을 받아서 작성
     public class MainActivity extends AppCompatActivity

   (2) 하는일 
      1) 화면을 표현 : setContentView(표시할 뷰)
      2)이벤트 제어
      FloatingActionButton fab = 
      (FloatingActionButton) findViewById(R.id.fab);
      fab.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
      //처리할 내용
      }
      });
      3)옵션 메뉴 제어 : onCreateOptionsMenu(),onOptionsItemSelected()

    (3) 액티비티의 메소드에 로그 기록 권장- 디버그에 유용

         작성방법 : Log.종류("앱이름|프로젝트명","메소드명")
          예) Test프로젝트의 onCreate()메소드에 기록하는 디버그 로그 : Log.d("Test","onCreate")


    (4) 형변환 - 캐스트(cast)
         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

  
    (5) 어댑터가 필요한 뷰
        리스트뷰(ListView), 그리드뷰(GridView)
        예) 레이아웃 리소스: 리스트뷰 껍데기
                         |
                         |액티비티
                         |
                 어댑터 클래스 : 리스트 뷰의 내용을 표시하고 취득

        1) 작성순서
           ① 레이아웃 리소스에 껍데기 만듦
           ② 액티비티를 통해서 내용을 채움
              - 어댑터 클래스를 생성해서 채워야하는 경우가 있음

6. 이벤트 - 동작에 대한 작업처리. 액티비티에서 함

   (1) 이벤트 처리의 3요소
      1) 이벤트가 발생하는 뷰(위젯)
         Button endBtn = (Button)findViewById(R.id.end_btn);
      2) 뷰에서 발생하는 이벤트를 감지하는 리스너
         endBtn.setOnClickListener(클래스레퍼런스);
      3) 이벤트를 처리하는 메소드
         public void onClick(View v) {}


7.인텐트 - 액티비티, 서비스, 브로드캐스트 리시버 호출에 사용
   - 액티비티, 서비스, 브로드캐스트 리시버는 인텐트(intent)라 불리는 비동기 메시지에 의해서 활성화

   (1) 사용되는 시기
      - 액티비티, 서비스, 브로드캐스트 리시버 호출시 사용
      1) 액티비티 호출 : startActivity(인텐트객체) 또는 startActivityForResult(인텐트객체)메소드
      2) 서비스 호출 : startService(인텐트객체)메소드
      3) 브로드캐스트 리시버 호출 :sendBroadcast(인텐트객체)메소드

   (2)사용법
      1) 인텐트 객체 작성방법
          Intent it = new Intent(this, 호출할컴포넌트클래스)
      2) 인텐트 객체 사용법
          startActivity(인텐트객체)
          startActivityForResult(인텐트객체)메소드
          startService(인텐트객체)
          sendBroadcast(인텐트객체)
          예) MainActivity에서 TestActivity호출
              Intent it = new Intent(this, TestActivity.class);
              startActivity(it);

         단) 무명내부클래스(이벤트제어)에서 인텐트 사용
             예) MainActivity에서 TestActivity호출

          //무명내부클래스
          endBtn.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
          Intent it = 
          new Intent(MainActivity.this, TestActivity.class);
          startActivity(it);
          }
          });

    (3) 액티비티 간의 정보유지
        인텐트의 파라미터
        MainActivity ---------------> TestActivity 
                     <---------------
                          프레퍼런스

        인텐트의 파라미터: putExtra()
          Intent it = new Intent(this, TestActivity.class);
          it.putExtra(파라메터명, 값)

        프레퍼런스 : SharedPreferences
          SharedPreferences prefs 
          = getSharedPreferences(PREFS_NAME,MODE_PRIVATE);

8. 프로젝트 - 인공지능 앱 개발
   - 사용자의 질문에 응답을 하는 앱
   - 한국어와 영어 두가지 언어로 구성됨
   - 사용자의 질문은 키보드 또는 음성으로 입력됨

   * 안드로이드 앱에서 제공하는 저장소의 종류
      - 앱 내의 공간 : 해당 앱에서만 사용할 데이터 저장 <-공유안됨
        예)[res],[assets]폴더
      - 공유 폴더 : 여러 앱에서 공유할 데이터 저장
       예)안드로이드 기기연결시 보이는 [Music], [Pictures] 등등

   * 안드로이드에서 제공하는 데이터 저장 기법 
     1. 제공되는 방법: 
     - 프레퍼런스, 내부/외부 저장소를 사용한 파일, SQLite데이터베이스, 네트워크를 사용한 웹상에서의

       데이터 저장 방법
     2. 방법 선택: 제공되는 방법 중 적절한 것을 선택
     - 단독으로 사용할 것이지 다른 애플리케이션과 공유할 것인지?
     - 데이터 유지용인지?
     - 데이터를 저장할 위치는 어디에 지정할지? 에 따라 

    * JSON, XML 데이터

     - 데이터를 배포할 때 사용하는 표준. 배포되는 공공데이터들도 이 둘 중 하나의 포맷을 사용


9. 데이터베이스 - 스마트 기기에 내장된 SQLite DB사용
 - SQLite DB 용도 : 앱에서 발생하는 데이터등을 저장
 - 서버DB 용도: 기관의 모든 데이터 관리. 
    그룹웨어, 웹사이트...

10.프레퍼런스 - 액티비티간에 정보 유지. 일종의 세션


Project 보기 : 저장된 폴더 내용과 동일 --> 간단하게 보기 위해 "Android" 보기



에러 시 clean project 또는 종료 후 재실행



* 작업 환경 구성 :  MainActivity, content_main.xml 두번 클릭

  - MainActivity 

  - content_main.xml : 디자인/텍스트 모드 

       * 위젯 사용하려면 디자인 모드로....

         activity_main.xml 선택 시 수정(편집) 안됨





공공 데이터(빅데이터 포함) 제공 기관 목록.hwp

안드로이드 스튜디오에서 APK파일 생성.pdf

안드로이드 앱 개발과정 PT.pptx

안드로이드 앱 개발과정 추가교재 - Android Studio사용.pdf


728x90