1. 2013스마트디바이스구조 기말 고사(100)
Smart Device Structure
Date: 2013-12-19
1. Android OS가 Windows OS와 차별화되는 점은 무엇인지 설명하시오.
(20)
- Android에는 메모리(memory)가 부족하기 때문에 사용자 질의 없이 OS 차
원에서 app을 파괴할 수 있다. 하지만 Windows에서는 실행한 app을 사용
자 질의 없이 파괴하지 않는다.
- Android는 메모리 부족으로 인해 Activity의 핵심 정보는 Context에 보관한
다. OS 접근은 주로 Context를 통해서 한다. 하지만 Windows에서는 전역
변수로 정의된 함수를 이용해 OS에 마음대로 접근할 수 있다.
- Android는 mobile OS이므로 실행에 시간이 걸리는 함수는 주로 메시지
(message)를 이용해 정보를 획득한다. Windows는 메시지 처리도 가능하지
만 실행 시간이 오래 걸리더라도 함수를 직접 실행해서 출력을 얻을 수
있다.
- Open Source인 Android는 내부 구현 방식을 쉽게 열람할 수 있고 라이선
스만 지키면 무료로 자유롭게 사용할 수 있다. 하지만 Windows는 아직까
지 내부 구현 방식이 공개되지 않았으며 유료로 사용하고 있다.
2. Smart device에서 전화 송수신 정보의 획득 과정을 TelephonyManager,
PhoneStateListener를 이용해 설명하시오.프로그램을 적지 말고 함수와
문장으로만 설명할 것. (20)
- System Service인 Telephony Manager에는 Activity가 바로 접근할 수 없으
므로 Context의 getSystemService 함수를 이용해 TelephonyManager에 접
근한다.
- 전화 송수신 특성을 얻으려면 PhoneStateListener를 TelephonyManager에
붙여야 한다. TelephonyManager의 listen 함수를 이용해 필요한 송수신 정
보를 획득할 수 있다.
- 더 이상 송수신 정보 획득이 필요없으면TelephonyManager의 listen 함수에
2. LISTEN_NONE을 넣어 해제할 수 있다.
3. GPS의 장점과 단점을 설명하시오. (20)
1) 장점
- 30개 내외의 인공위성으로 전지구적인 측위 시스템을 구성할 수 있다.
- 관측되는 인공위성 개수가 많아질수록 위치 정밀도가 향상된다.
- 대량 생산되어 수신기 가격이 매우 싸다.
2) 단점
- 항상 인공위성을 봐야 하므로 실내에서는 측위가 불가능하다.
- 밀집된 대도시에서도 GPS의 위치 정밀도가 떨어진다.
- 미국이 군사 목적으로 개발된 시스템이므로 군용보다 상업용 체계의 위치
정밀도가 떨어진다.
4. 다음 용어를 설명하시오. (20)
① Intent Filter (10)
- 전달되는 여러 Intent 중에서 필요한 Intent만 골라내는 기능이 있다.
- Windows OS에서 message map에 해당하는 Android의 기능이다.
② Service in Android (10)
- Activity와 비슷하지만 Android의 기저(background)에서 돌아간다.
- Activity의 우선 순위가 바뀌더라도 Service는 항상 돌아간다.
- Activity와는 다르게 Service는 UI나 graphics 기능이 없다.
5. Smart device에 장착된 Bluetooth 장치를 초기화, 주변 Bluetooth 장치
검색, BroadcastReceiver를 Activity에 등록하는 program을 작성하시오.
(20)
① onCreate 함수에만 작성: 자동 생성 code는 적을 필요 없음, error
처리할 필요 없음
② 전역 변수로 BluetoothAdapterbthAdapter가 이미 정의됨
③ BroadcastReceiver를 상속받은 BluetoothReceiver의 전역 변수
bthReceiver는 있다고 가정
3. ④ 전체 5줄 내외로 작성할 것
protected void onCreate(Bundle savedInstanceState) {
bthAdapter = BluetoothAdapter.getDefaultAdapter();
bthReceiver = new BluetoothReceiver();
IntentFilterinFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(bthReceiver, inFilter);
bthAdapter.startDiscovery();
}