본문 바로가기

프로그래밍24

안드로이드 Camera의 영상 출력하기 항상 정리되지 않았던 부분이라 짚고 넘어간다. 이번 장의 목표는 Camera 영상을 저번에 만든 Surface에 뿌려주는 것. SurfaceView의 코드에서 Camera 객체를 추가하여 preview까지 하는 코드를 우선 살펴보자. public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback { SurfaceHolder mHolder; Camera mCamera; public MySurfaceView(Context context) { super(context); mHolder = getHolder(); mHolder.addCallback(this); } @Override public void surfaceCreated(.. 2018. 12. 5.
Android SurfaceView SurfaceView란? SufaceView라는 이름에서 알 수 있듯이 Textview나 ImageView처럼 내용을 표시할 수 있는 View이다. SurfaceView에서 직접 내용을 뿌려주지는 않고, SurfaceHolder를 통해 데이터를 받아서 처리한다. Android Thread편에서 알 수 있듯이 안드로이드의 모든 컴포넌트에서 동작하는 행위들은(View처리) Android의 UI 쓰레드에서 동작한다. 그러나 Camera Preview나, 동영상 재생 같은 처리들은 1초에 몇 십 프레임을 출력해야하는 제법 무거운 작업들이고 Android UI 혼자 감당하기에는 자원이 부족, 이는 곧 치명적인 ANR이 발생하는 원인이 된다. SurfaceView는 UI 쓰레드와는 별도로 백그라운드 쓰레드에서 동작.. 2018. 12. 4.
안드로이드 쓰레드(1) 목표1.안드로이드 쓰레드에 대해 알아본다.(정의, 메인쓰레드가 동작하는 방식, 필요한 이유, ANR)2.핸들러, 루프, 메세지 큐 등에 대해 알아본다.3.Message와 Runnable에 대해 알아본다.4.HandlerThread 클래스에 대해 알아본다.5.AsyncTask에 대해 간략히 알아본다. 5.쓰레드 구현 방법에 대해서 알아본다.(Thread 클래스 상속, Runnable 인터페이스 구현) 안드로이드 멀티쓰레딩안드로이드와 같은 클라이언트 프로그래밍에서 가장 복잡하고도 중요한 부분은 여러 쓰레드에서 실행되는 코드를 작성해야 하는 경우이다.공식 안드로이드 문서에서는 "기본적으로 같은 애플리케이션의 모든 컴포넌트는 같은 프로세스 및 쓰레드(메인 쓰레드 혹은 UI쓰레드)에서 실행된다." 라고 말한다. .. 2018. 11. 12.
객체지향 프로그래밍의 특징 목표 객체지향의 4가지 특징을 이해한다. 1.Abstraction(추상화) 공통된 속성이나 행위를 추출하는 작업. 사물들의 공통된 특징, 즉 추상적 특징을 파악해 인식의 대상으로 삼는 행위이다. 구체적인 사물들의 공통적인 특징을 파악해서 하나의 개념으로 다루게 된다. 각 개체의 구체적인 개념이 아닌 추상적인 개념에 접근해야 향후 유연한 설계가 가능하다. ex) 아우디, BMW, 벤츠는 모두 자동차라를 공통적인 특징을 지닌다. 2.Encapsulation(캡슐화) 캡슐화는 낮은 결합도를 유지할 수 있도록 설계하는 객체지향의 특징이다. *응집도(Cohesion):모듈 안의 요소들이 얼마나 밀집하게 묶여있는지, 관련이 있는지를 말한다. *결합도(Coupling):모듈이 다른 모듈애 얼마나 의존적인지를 나타낸다.. 2018. 10. 19.
객체지향 프로그래밍의 설계원칙 목적객체지향 프로그래밍의 5대원칙 'SOLID'를 이해한다. *nextree의 객체지향에 관한 포스팅을 거의 필사하듯 따라서 쓰고 추가적인 기술적 설명을 덧붙였습니다. http://www.nextree.co.kr/p6960/ 1.Single Responsbility Principle, SRP (단일책임원칙)클래스는 단 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하는 데 집중되어 있어야 한다. 어떤 변화에 의해 클래스를 변경해야 하는 이유는 단 하나여야 한다. SRP를 적용하여 리팩토링을 하면 책임 영역이 확실해지기 때문에 한 책임의 변경에서 다른 책임의 변경으로 연쇄작용에서 자유로울 수 있다. 또한 책임을 적절히 분배함으로써 코드의 가독성 향상, 유지보수 용이하나는 장점도.. 2018. 10. 17.
객체지향 프로그래밍의 정의와 탄생배경 목적:객체지향 프로그래밍의 정의에 대해 이해한다.객체지향 프로그래밍의 탄생한 배경에 대해 이해한다. 정의객체지향 프로그래밍(Object-Oriented Programming , OOP)는 컴퓨터 프로그래밍의 패러다임의 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 '객체'들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 멧지를 주고받고 데이터를 처리할 수 있다.객체지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다. 그러나 지나친 프로그램.. 2018. 10. 17.