-
안드로이드 프로젝트 생성
Apply를 누른 다음, Run을 누른다.
그러면, AVD 창이 활성화된다.
- 안드로이드란?
- 구글이 제안한 스마트폰용 플랫폼
- 리눅스 커널기반
- 강력한 다양한 개방형 프로젝트의 결과물을 라이브러리화
- 자바언어
- 안드로이드 is not Linux!
- Bionic 라이브러리 사용
- Function Library
- Native Server
- 가상 하드웨어
-
Dalvik Virtual Machine
안드로이드는 운영체제와 미들웨어 그리고 핵심 애플리케이션을 포함하고 있는 모바일 디바이스를 위한 소프트웨어 스택Stack이다. 안드로이드 SDK는 Java 프로그래밍 언어를 사용하여 안드로이드 플랫폼 상의 애플리케이션을 개발하기 위해 필요한 도구들과 API를 제공한다.안드로이드는 이메일 클라이언트, SMS 문자메시지 프로그램, 캘린더, 맵, 브라우저, 컨택contact 등과 같은 핵심 애플리케이션을 탑재하고 있다. 모든 애플리케이션은 Java 프로그래밍 언어를 사용하여 작성되었다.
하위 레이어는 상위 레이어를 서비스 한다.
안드로이드는 4계의 계층으로 구분되어 있다.
첫번째는 H/W와 내부 메모리 관리, 프로세스 관리, 네트워킹 관리등을 담당하는 리눅스 커널이다.
안드로이드 개발 중 포팅을 하는 개발자라면 이 커널 부분을 H/W에서 작동하도록 하는 것을 할것이다.
안드로이드 2.1의 현재(2010-04-28) 커널 버전은 2.6.29이다.
두번째는 C,C++로 구성된 Library 계층으로 핸드폰에 사용되는 H/W를 사용하기 위한 기능을 제공한다.
대표적인 Library는 그래픽을 구현하기위한 Graphic 라이브러리와 동영상 제생을 위한 Media Codec가 있다.
또한 안드로이드에서 Java Application을 동작 시키기위한 Runtime인 Dalvik VM이 위치해있다.
세번째는 안드로이드 Application을 작성하기 위해 필요한 기능들을 제공하는 Application Framework 계층이 있다.
안드로이드 Application 개발자는 필요한 기능 구현을 위해 Framework 계층에서 재공하는 API를 사용한다.
내번째는 최상위 Application 계층으로 사용자가 사용하는 Application 들이 배포되는 계층이다.
개발자가 에플리케이션을 배포하면 여기에 포함되며 기본적으로 설치된 구글의 에플리케이션과 동등한
위치를 갖는다.
4개의 계층으로 구분된 안드로이드의 모든 소스는 오픈되어 있으며 각각 소스들을 빌드하여 특화된
안드로이드를 만들 수 있다.
-
Windows-> Show view -> Other
안드로이드는 확장자 png만 지원한다.
aa.png 파일을 추가했다.
-
Private < default < protected < public
- Private접근 제어자
- Private 멤버의 사용 범위는 소속된 클래스 내의 메소드로 국한되어 데이터를 은닉할 수 있다.
- 일반적으로 필드를 private로 설정한다.
-
Private 필드에 접근하기 위해서는 public 메소드를 정의해야 한다.
- Public 접근 제어자
- 클래스 내의 메소드를 public 멤버로 지정하면 객체가 선언되어 있는 영역이라면 어디서든지 레퍼런스 변수 다음에 닷(.) 연산자로 연결하여 메소드를 사용할 수 있다.
-
Private 필드를 처리하기 위해 작성하는 메소드는 일반적으로 public 멤버로 설정한다.
접근제어자
private : 같은 클래스 내에서만 접근 < default : 같은 패키지 내에서만 접근 생략 가능 < protected : 패키지에 관계없이 상속 관계가 있는 자손 클래스에서만
접근 가능. public : 접근 제한이 없다.
멤버 변수의 초기화 시기와 순서.
클래스 변수의 초기화 시점 : 클래스가 처음 로딩 될 때 단 한번 초기화 된다.
인스턴스 변수의 초기화 시점 : 인스턴스가 생성될 때마다 각 인스턴스 별로 초기화가 이루어진다.
클래스 변수의 초기화 순서 : 기본값 - 명시적 초기화 - 클래스 초기화 블럭
인스턴스 변수의 초기화 순서 : 기본값 - 명시적 초기화 - 인스턴스 초기화 블럭 - 생성자
같은 패키지 안에서는 작업이 가능하다.
-
(예제 5-2) getter와 setter 메소드 정의와 사용하기
-
메모리 영역의 역할
public class TankMain {
public static void main(String[] args) {
System.out.println(Tank.howmany);
System.out.println(Tank.getHowMany());
Tank tiger=new Tank();
Tank black=new Tank();
Tank cats=new Tank();
Tank hawk=new Tank();
System.out.println(tiger.howfast); //member
tiger.input(); tiger.increase();
black.input(); black.increase();
cats.input(); cats.increase();
hawk.input(); hawk.increase();
tiger.showShortLife();
tiger.showShortLife();
System.out.println(Tank.getHowMany()); //static
System.out.println(tiger.getHowFast()); //member
System.out.println(tiger); //type@hashCode
System.out.println(black);
System.out.println(cats);
System.out.println(hawk);
tiger=null; //garbage collection 대상
System.out.println(tiger); //type@hashCode
}
}
class Tank {
public static int howmany=0; //공유 데이터
public int howfast=100;
public void input(){
howmany++;
}
public void increase(){
howfast+=30;
}
public static int getHowMany(){
return howmany;
}
public int getHowFast(){
return howfast;
}
public void showShortLife(){
int age=5;
howfast-=age;
}
}
-
커피 자판기 클래스
import java.util.Scanner;
public class coffe {
int money;
int cup;
void ShowMenu()
{
Scanner input = new Scanner(System.in);
System.out.println("돈을 넣으세요");
money = input.nextInt();
System.out.println("커피 200원, 몇 잔?");
cup = input.nextInt();
if(money < (200*cup))
{
System.out.println("돈이 모자람");
}
else
{
System.out.println("커피" + cup + "잔 나왔음");
System.out.println("거스름 돈 "+(money-(cup*200))+"원");
}
}
public static void main(String[] args) {
coffe cm = new coffe();
cm.ShowMenu();
}
}
'코스웨어 > 10년 스마트폰BSP' 카테고리의 다른 글
[BSP]업무일지-이상구-20100816 (0) | 2010.08.16 |
---|---|
[BSP]업무일지_김기찬 (0) | 2010.08.13 |
[BSP]업무일지 - 한경수 - 20100812 (0) | 2010.08.12 |
[BSP]업무일지-박동수-20100811 (0) | 2010.08.11 |
[BSP]업무일지 - 송동규 -20100809 (0) | 2010.08.09 |
[BSP]업무일지 - 서동준 -20100806 (1) | 2010.08.08 |
[BSP]업무일지 - 김강수 -20100806 (2) | 2010.08.06 |
[BSP]업무일지 - 김병찬 -20100804 (0) | 2010.08.04 |