SlideShare a Scribd company logo
1 of 4
1
2018 Final-term Examination (100)
Architecting Smart Devices
Date: 2018-12-11
1. LocationManager가 LocationListener 등록에 사용하는 함수를 제시하고
GPS_PROVIDER와 NETWORK_PROVIDER의 차이점을 서술하시오. 예를 들어 정밀하게
위치를 추적하기 위해 0.1초에 한 번씩 미세한 위치 변화도 모두 추적할 수 있는 적절
한 함수 입력을 제시하시오. (20)
- LocationListener를 등록하는 함수는 LocationManager. requestLocationUpdates()임
- GPS_PROVIDER는 GPS를 이용해 위치 정보를 획득할 수 있다. NETWORK_PROVIDER는
이동 통신 network이나 WiFi 정보를 이용해 위치 정보를 획득한다. GPS_PROVIDER는
하늘에 떠있는 GPS 위성을 볼 수 있어야 위치 정보가 얻어지지만 위치는 매우 정확하
게 얻을 수 있다. NETWORK_PROVIDER는 실내 혹은 실외에서 위치 정보를 쉽게 얻을
수 있지만 위치 정밀도는 좋지 않다.
- 문제에 제시한 함수 입력은 다음과 같다.
LocationManager. requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0,
LocationListener);
2. 만보계용 Android app을 구성하려 한다. 다음에 답하시오. (40)
1) SensorManager로부터 만보계용 Sensor를 획득하는 code 제시 (10)
SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensorAccel = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
2) 사용자 걸음 여부를 판단하기 위한 SensorEventListener 구성(property와 method) 제
시 (20)
- SensorEventListener를 상속받은 class는 MySensorListener로 생각
- 가속계가 출력하는 x, y, z축 가속도의 변화를 추적하는 code가 필요하다. 예를 들면
다음과 같다. 가속도 변화값은 diffAccel에 저장된다.
2
public class MySensorListener implements SensorEventListener {
public double oldX, oldY, oldZ;
public double newX, newY, newZ;
public double diffAccel;
public MySensorListener() {
oldX = oldY = oldZ = newX = newY = newZ = 0.;
diffAccel = 0.;
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
newX = event.values[0];
newY = event.values[1];
newZ = event.values[2];
diffAccel = Math.abs(newX – oldX) + Math.abs(newY – oldY) + Math.abs(newZ –
oldZ);
oldX = newX; oldY = newY; oldZ = newZ;
}
}
}
3) SensorEventListener를 SensorManager에 등록하고 해제하는 code를 각각 제시 (10)
- 등록 code
MySensorListener mySensorListener = new MySensorListener();
sensorManager.registerListener(mySensorListener, sensorAccel,
SensorManager.SENSOR_DELAY_NORMAL);
- 해제 code
sensorManager.unregisterListener(mySensorListener);
3. 다음을 Android code로 구현하라. Code는 짧을수록 가산점. (40)
3
1) 10초에 한 번씩 Toast message로 “Wake up”을 출력. Background에 있을 때도 항상
Toast message 출력. Thread.start()를 쓰지 않고 개념적으로만 제시 가능. (20)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
…
Intent intent = new Intent(this, ToastWakeService.class);
startService(intent);
}
}
class ToastWakeService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
int nResult = super.onStartCommand(intent, flags, startId);
while (true) {
try { Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Toast.makeText(this, "Wake up", Toast.LENGTH_SHORT).show();}
}
return nResult;
}
}
2) 사용자에게 입력받은 문자열이 “start”라면 사용자 발신 전화 정보를 추적하는
BroadcastReceiver를 등록하고, “stop”이 입력되면 이 BroadcastReceiver 등록을 해제하
는 code. BroadcastReceiver 이름은 PhoneCallReceiver로 정하며 이미 있다고 가정함
(PhoneCallReceiver에 대한 code는 작성할 필요 없음). (20)
4
PhoneCallReceiver phoneCallReceiver;
phoneCallReceiver = new PhoneCallReceiver();
EditText etInput;
etInput = (EditText) findViewById(R.id.etInput);
String sInput = etInput.getText.toString();
if (sInput.equals(“start”)) {
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL);
registerReceiver(phoneCallReceiver, intentFilter);
}
else if (sInput.equals(“stop”)) {
unregisterReceiver(phoneCallReceiver);
}

More Related Content

More from Yong Heui Cho

TestBCD2018-2(answer)
TestBCD2018-2(answer)TestBCD2018-2(answer)
TestBCD2018-2(answer)Yong Heui Cho
 
TestEC2018-2(answer)
TestEC2018-2(answer)TestEC2018-2(answer)
TestEC2018-2(answer)Yong Heui Cho
 
TestEC2018-1(answer)
TestEC2018-1(answer)TestEC2018-1(answer)
TestEC2018-1(answer)Yong Heui Cho
 
TestBCD2018-1(answer)
TestBCD2018-1(answer)TestBCD2018-1(answer)
TestBCD2018-1(answer)Yong Heui Cho
 
TestSDS2018-1(answer)
TestSDS2018-1(answer)TestSDS2018-1(answer)
TestSDS2018-1(answer)Yong Heui Cho
 
BJT - Analysis of Bias
BJT - Analysis of BiasBJT - Analysis of Bias
BJT - Analysis of BiasYong Heui Cho
 
TestCloud2018-2(answer)
TestCloud2018-2(answer)TestCloud2018-2(answer)
TestCloud2018-2(answer)Yong Heui Cho
 
TestECD2018-1(answer)
TestECD2018-1(answer)TestECD2018-1(answer)
TestECD2018-1(answer)Yong Heui Cho
 
Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Yong Heui Cho
 
TestCloud2018-1(answer)
TestCloud2018-1(answer)TestCloud2018-1(answer)
TestCloud2018-1(answer)Yong Heui Cho
 
RF 증폭기 설계(Design of RF Amplifier)-rev1
RF 증폭기 설계(Design of RF Amplifier)-rev1RF 증폭기 설계(Design of RF Amplifier)-rev1
RF 증폭기 설계(Design of RF Amplifier)-rev1Yong Heui Cho
 
Computing Paradigm - rev1
Computing Paradigm - rev1Computing Paradigm - rev1
Computing Paradigm - rev1Yong Heui Cho
 
Cloud Deployment Model
Cloud Deployment ModelCloud Deployment Model
Cloud Deployment ModelYong Heui Cho
 
Cloud Computing Architecture
Cloud Computing ArchitectureCloud Computing Architecture
Cloud Computing ArchitectureYong Heui Cho
 
Cloud Computing Fundamentals
Cloud Computing FundamentalsCloud Computing Fundamentals
Cloud Computing FundamentalsYong Heui Cho
 
클라우드서비스(강의계획서,2018-1)
클라우드서비스(강의계획서,2018-1)클라우드서비스(강의계획서,2018-1)
클라우드서비스(강의계획서,2018-1)Yong Heui Cho
 
전자회로설계(강의계획서,2018-1)
전자회로설계(강의계획서,2018-1)전자회로설계(강의계획서,2018-1)
전자회로설계(강의계획서,2018-1)Yong Heui Cho
 

More from Yong Heui Cho (20)

Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Computing Paradigm
Computing ParadigmComputing Paradigm
Computing Paradigm
 
TestBCD2018-2(answer)
TestBCD2018-2(answer)TestBCD2018-2(answer)
TestBCD2018-2(answer)
 
TestEC2018-2(answer)
TestEC2018-2(answer)TestEC2018-2(answer)
TestEC2018-2(answer)
 
TestEC2018-1(answer)
TestEC2018-1(answer)TestEC2018-1(answer)
TestEC2018-1(answer)
 
TestBCD2018-1(answer)
TestBCD2018-1(answer)TestBCD2018-1(answer)
TestBCD2018-1(answer)
 
TestSDS2018-1(answer)
TestSDS2018-1(answer)TestSDS2018-1(answer)
TestSDS2018-1(answer)
 
BJT - Analysis of Bias
BJT - Analysis of BiasBJT - Analysis of Bias
BJT - Analysis of Bias
 
TestCloud2018-2(answer)
TestCloud2018-2(answer)TestCloud2018-2(answer)
TestCloud2018-2(answer)
 
TestECD2018-1(answer)
TestECD2018-1(answer)TestECD2018-1(answer)
TestECD2018-1(answer)
 
Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)
 
TestCloud2018-1(answer)
TestCloud2018-1(answer)TestCloud2018-1(answer)
TestCloud2018-1(answer)
 
Cloud Service Model
Cloud Service ModelCloud Service Model
Cloud Service Model
 
RF 증폭기 설계(Design of RF Amplifier)-rev1
RF 증폭기 설계(Design of RF Amplifier)-rev1RF 증폭기 설계(Design of RF Amplifier)-rev1
RF 증폭기 설계(Design of RF Amplifier)-rev1
 
Computing Paradigm - rev1
Computing Paradigm - rev1Computing Paradigm - rev1
Computing Paradigm - rev1
 
Cloud Deployment Model
Cloud Deployment ModelCloud Deployment Model
Cloud Deployment Model
 
Cloud Computing Architecture
Cloud Computing ArchitectureCloud Computing Architecture
Cloud Computing Architecture
 
Cloud Computing Fundamentals
Cloud Computing FundamentalsCloud Computing Fundamentals
Cloud Computing Fundamentals
 
클라우드서비스(강의계획서,2018-1)
클라우드서비스(강의계획서,2018-1)클라우드서비스(강의계획서,2018-1)
클라우드서비스(강의계획서,2018-1)
 
전자회로설계(강의계획서,2018-1)
전자회로설계(강의계획서,2018-1)전자회로설계(강의계획서,2018-1)
전자회로설계(강의계획서,2018-1)
 

Recently uploaded

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and AdoptionSeung-chan Baeg
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'Hyundai Motor Group
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 

Recently uploaded (7)

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 

TestSDS2018-2(answer)

  • 1. 1 2018 Final-term Examination (100) Architecting Smart Devices Date: 2018-12-11 1. LocationManager가 LocationListener 등록에 사용하는 함수를 제시하고 GPS_PROVIDER와 NETWORK_PROVIDER의 차이점을 서술하시오. 예를 들어 정밀하게 위치를 추적하기 위해 0.1초에 한 번씩 미세한 위치 변화도 모두 추적할 수 있는 적절 한 함수 입력을 제시하시오. (20) - LocationListener를 등록하는 함수는 LocationManager. requestLocationUpdates()임 - GPS_PROVIDER는 GPS를 이용해 위치 정보를 획득할 수 있다. NETWORK_PROVIDER는 이동 통신 network이나 WiFi 정보를 이용해 위치 정보를 획득한다. GPS_PROVIDER는 하늘에 떠있는 GPS 위성을 볼 수 있어야 위치 정보가 얻어지지만 위치는 매우 정확하 게 얻을 수 있다. NETWORK_PROVIDER는 실내 혹은 실외에서 위치 정보를 쉽게 얻을 수 있지만 위치 정밀도는 좋지 않다. - 문제에 제시한 함수 입력은 다음과 같다. LocationManager. requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, LocationListener); 2. 만보계용 Android app을 구성하려 한다. 다음에 답하시오. (40) 1) SensorManager로부터 만보계용 Sensor를 획득하는 code 제시 (10) SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); Sensor sensorAccel = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 2) 사용자 걸음 여부를 판단하기 위한 SensorEventListener 구성(property와 method) 제 시 (20) - SensorEventListener를 상속받은 class는 MySensorListener로 생각 - 가속계가 출력하는 x, y, z축 가속도의 변화를 추적하는 code가 필요하다. 예를 들면 다음과 같다. 가속도 변화값은 diffAccel에 저장된다.
  • 2. 2 public class MySensorListener implements SensorEventListener { public double oldX, oldY, oldZ; public double newX, newY, newZ; public double diffAccel; public MySensorListener() { oldX = oldY = oldZ = newX = newY = newZ = 0.; diffAccel = 0.; } @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { newX = event.values[0]; newY = event.values[1]; newZ = event.values[2]; diffAccel = Math.abs(newX – oldX) + Math.abs(newY – oldY) + Math.abs(newZ – oldZ); oldX = newX; oldY = newY; oldZ = newZ; } } } 3) SensorEventListener를 SensorManager에 등록하고 해제하는 code를 각각 제시 (10) - 등록 code MySensorListener mySensorListener = new MySensorListener(); sensorManager.registerListener(mySensorListener, sensorAccel, SensorManager.SENSOR_DELAY_NORMAL); - 해제 code sensorManager.unregisterListener(mySensorListener); 3. 다음을 Android code로 구현하라. Code는 짧을수록 가산점. (40)
  • 3. 3 1) 10초에 한 번씩 Toast message로 “Wake up”을 출력. Background에 있을 때도 항상 Toast message 출력. Thread.start()를 쓰지 않고 개념적으로만 제시 가능. (20) public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { … Intent intent = new Intent(this, ToastWakeService.class); startService(intent); } } class ToastWakeService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { int nResult = super.onStartCommand(intent, flags, startId); while (true) { try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } Toast.makeText(this, "Wake up", Toast.LENGTH_SHORT).show();} } return nResult; } } 2) 사용자에게 입력받은 문자열이 “start”라면 사용자 발신 전화 정보를 추적하는 BroadcastReceiver를 등록하고, “stop”이 입력되면 이 BroadcastReceiver 등록을 해제하 는 code. BroadcastReceiver 이름은 PhoneCallReceiver로 정하며 이미 있다고 가정함 (PhoneCallReceiver에 대한 code는 작성할 필요 없음). (20)
  • 4. 4 PhoneCallReceiver phoneCallReceiver; phoneCallReceiver = new PhoneCallReceiver(); EditText etInput; etInput = (EditText) findViewById(R.id.etInput); String sInput = etInput.getText.toString(); if (sInput.equals(“start”)) { IntentFilter intentFilter = new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL); registerReceiver(phoneCallReceiver, intentFilter); } else if (sInput.equals(“stop”)) { unregisterReceiver(phoneCallReceiver); }