¸ð¹ÙÀÏ ÆùÀº °¢Á¾ ¼¾¼¸¦ ³»ÀåÇÏ¿© ´Ù¾çÇÑ ÁÖº¯ »óȲµéÀ» ÀνÄÇØ ³½´Ù. ¼¾¼ÀÇ Á¤º¸¸¦ È°¿ëÇϸé ÆùÀ» µ¹¸®±â³ª Èçµé±â¸¸ Çصµ ¸í·ÉÀ» Àü´ÞÇÒ ¼ö ÀÖÀ¸¸ç ȸéÀ» ÅÍÄ¡ÇÏÁö ¾Ê°íµµ °ÔÀÓÀ» Áñ±æ ¼ö ÀÖ´Ù. À¥ ºê¶ó¿ìÀú´Â ÆùÀÇ ¹æÇâ¿¡ µû¶ó È¸é ¹èÄ¡¸¦ ÀÚµ¿À¸·Î Á¶Á¤Çϱ⵵ ÇÑ´Ù. Æù ÀÚü°¡ »õ·Î¿î UI·Î È°¿ëµÇ¸ç Àç¹Ìµµ ÀÖ°í ½Ç¿ë¼ºµµ ³ô´Ù. °íÁ¤µÈ ÀÚ¸®¿¡ ¿ìµÎÄ¿´Ï ¾É¾Æ ÀÖ´Â PC·Î´Â »ó»óµµ ÇÒ ¼ö ¾ø´Â ºÎ·¯¿î ±â´ÉÀÌ´Ù.
¿ÜºÎÀÇ ÀÔ·ÂÀ» Àо´Â ¼¾¼´Â Çϵå¿þ¾î ÀåÄ¡¿©¼ Æù¸¶´Ù Á¦°øÇÏ´Â ¼¾¼ ¸ñ·ÏÀÌ ´Ù¸£´Ù. ºñ½Ñ Àåºñ´Â ´ëºÎºÐÀÇ ¼¾¼¸¦ ³»ÀåÇÏ°ÚÁö¸¸ º¸±ÞÇü ÀåºñµéÀº °æÁ¦ÀûÀÎ ºÎ´ãÀ¸·Î ÀÎÇØ ÀÌÁß ÀϺθ¦ »ý·«Çϱ⵵ ÇÑ´Ù. ÀåÂøµÈ ¼¾¼ÀÇ ¸ñ·ÏÀ» ¾òÀ¸·Á¸é ¸ÕÀú ¼¾¼¸¦ °ü¸®ÇÏ´Â ¼¾¼ °ü¸®ÀÚ °´Ã¼ºÎÅÍ ±¸ÇØ¾ß ÇÑ´Ù. °´Ã¼¸¦ »ý¼ºÇÒ ÇÊ¿ä´Â ¾øÀ¸¸ç ½Ã½ºÅÛ ¼ºñ½ºÀ̹ǷΠ´ÙÀ½ È£Ãâ¹®À¸·Î ±¸ÇÒ ¼ö ÀÖ´Ù.
(SensorManager)getSystemService(Context.SENSOR_SERVICE);
¼¾¼ °ü·Ã API´Â SDK 1.5 ¹öÀü¿¡¼ ´ëÆøÀûÀ¸·Î º¯°æµÇ¾ú´Âµ¥ ¿©±â¼´Â °¡±ÞÀûÀ̸é 1.5 ÀÌÈÄÀÇ API¸¸À» ´Ù·ç±â·Î ÇÑ´Ù. ¼¾¼ °ü¸®ÀÚ´Â ÀåÂøµÈ ¼¾¼ÀÇ ¸ñ·ÏÀ» ±¸ÇÏ°í ¼¾¼·ÎºÎÅÍÀÇ ÀÔ·ÂÀ» ¹Þ´Â ¸®½º³Ê¸¦ µî·Ï ¹× ÇØÁ¦ÇÏ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. ¸ÕÀú »ç¿ë °¡´ÉÇÑ ¼¾¼ÀÇ ¸ñ·ÏºÎÅÍ Á¶»çÇØ º¸ÀÚ. ¼¾¼ °ü¸®ÀÚÀÇ ´ÙÀ½ ¸Þ¼µå¸¦ È£ÃâÇÑ´Ù.
List<Sensor> getSensorList (int type)
Àμö·Î Á¶»çÇÏ°í ½ÍÀº ¼¾¼ÀÇ Å¸ÀÔ »ó¼ö¸¦ Àü´ÞÇϸé ÇØ´ç ŸÀÔÀÇ Sensor °´Ã¼ ¸ñ·ÏÀÌ ¸®ÅϵȴÙ. ¼¾¼ÀÇ Å¸ÀÔÀº Sensor Ŭ·¡½º¿¡ ´ÙÀ½°ú °°ÀÌ »ó¼ö·Î Á¤ÀǵǾî ÀÖ´Ù.
ŸÀÔ |
»ó¼ö°ª |
¼³¸í |
TYPE_ACCELEROMETER |
1 |
°¡¼Ó°è |
TYPE_MAGNETIC_FIELD |
2 |
ÀÚ±âÀå |
TYPE_ORIENTATION |
3 |
ȸÀü ¹æÇâ |
TYPE_GYROSCOPE |
4 |
ÀÚÀ̷νºÄÚÇÁ. ¿ªÇÐÀû ¿îµ¿À» Á¶»çÇϴ ȸÀüÀÇ |
TYPE_LIGHT |
5 |
Á¶µµ. È¸é ¹à±â Á¶Á¤ |
TYPE_PRESSURE |
6 |
¾Ð·Â °¨Áö |
TYPE_TEMPERATURE |
7 |
¿Âµµ°è |
TYPE_PROXIMITY |
8 |
±ÙÁ¢ °Å¸®°è. ÅëÈÁß ¾×Á¤ ²ø ¶§ »ç¿ë |
TYPE_ALL |
-1 |
¸ðµç ¼¾¼ |
»ç¿ë °¡´ÉÇÑ ¸ðµç ¼¾¼µéÀ» ÇѲ¨¹ø¿¡ Á¶»çÇÏ·Á¸é TYPE_ALLÀ» Àü´ÞÇÑ´Ù. ¿©·¯ ŸÀÔÀÇ ¼¾¼¸¦ ÇѲ¨¹ø¿¡ Á¶»çÇÒ ¶§´Â ¹°·ÐÀÌ°í ƯÁ¤ ŸÀÔ¿¡ ´ëÇÑ ¼¾¼µµ º¹¼ö°³ Á¸ÀçÇÒ ¼ö ÀÖÀ¸¹Ç·Î getSensorList ¸Þ¼µå´Â ´ÜÀÏ Sensor °´Ã¼¸¦ ¸®ÅÏÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó Sensor °´Ã¼ÀÇ ¸ñ·ÏÀ» ¸®ÅÏÇÑ´Ù. Sensor Ŭ·¡½º¿¡´Â ¼¾¼ÀÇ ¿©·¯ °¡Áö Á¤º¸¸¦ ±¸ÇÏ´Â ¸Þ¼µåµéÀÌ Á¦°øµÈ´Ù.
¸Þ¼µå |
¼³¸í |
int getType () |
¼¾¼ÀÇ Å¸ÀÔ |
String getName () |
¼¾¼ÀÇ À̸§ |
float getPower () |
Àü·Â »ç¿ë·®À» ¹Ð¸® ¾ÏÆä¾î(mA)´ÜÀ§·Î Á¶»çÇÑ´Ù. |
float getResolution () |
ÇØ»óµµ |
float getMaximumRange () |
ÃÖ´ë ÃøÁ¤ ¹üÀ§ |
String getVendor () |
Á¦Á¶»ç |
int getVersion () |
¹öÀü |
´ÙÀ½ ¿¹Á¦´Â Àåºñ°¡ Á¦°øÇÏ´Â ¼¾¼ÀÇ ¸ñ·ÏÀ» Á¶»çÇÑ´Ù. ¼¾¼ °ü¸®ÀÚ¸¦ ±¸ÇÏ°í getSensorList ¸Þ¼µå·Î Àüü ¼¾¼ ¸ñ·ÏÀ» ±¸ÇÑ ÈÄ ¸ñ·ÏÀ» ¼øȸÇÏ¸é¼ °¢ ¼¾¼ÀÇ Á¤º¸µéÀ» ¹®ÀÚ¿·Î Á¶¸³ÇÏ¿© ÅؽºÆ® ºä·Î Ãâ·ÂÇß´Ù. ´Ü¼øÈ÷ Á¤º¸¸¸ Á¶»çÇØ º¸´Â °ÍÀ̹ǷΠonCreate¿¡¼ ¸ðµç ÀÛ¾÷ÀÌ ¼öÇàµÈ´Ù.
hard_SensorManager |
public class hard_SensorManager extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hard_sensormanager);
String result = "";
SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
List<Sensor> arSensor = sm.getSensorList(Sensor.TYPE_ALL);
result = "size = " + arSensor.size() + "\n\n";
for (Sensor s : arSensor) {
result += ("name = " + s.getName() + " ,type = " + s.getType() +
", vender = " + s.getVendor() + ", version = " + s.getVersion() +
", power = " + s.getPower() + ", res = " + s.getResolution() +
", range = " + s.getMaximumRange() + "\n");
}
TextView txtResult =(TextView)findViewById(R.id.result);
txtResult.setText(result);
}
}
Á¶»çµÇ´Â ¼¾¼ÀÇ ¸ñ·ÏÀº Àåºñ¿¡ µû¶ó ´Ù¸£´Ù. ¿¡¹Ä·¹ÀÌÅÍ¿¡¼´Â °¡¼Ó ¼¾¼°¡ Çϳª ÀÖ´Â °ÍÀ¸·Î Á¶»çµÇÁö¸¸ À̰͵µ ¾Æ¸¶ °¡Â¥ÀÏ °ÍÀ¸·Î ÃßÃøµÈ´Ù.
¿¡¹Ä·¹ÀÌÅÍ´Â ½ÇÁ¦ ¿òÁ÷ÀÏ ¼ö ÀÖ´Â Àåºñ°¡ ¾Æ´Ï¹Ç·Î Çϵå¿þ¾î Àåºñ¸¦ °¡Áú ¼ö ¾øÀ¸¸ç ¼³»ç Èä³»¸¦ ³½´Ù ÇÏ´õ¶óµµ ¿¡¹Ä·¹ÀÌÅ͸¦ Àâ°í Èçµé ¼ö´Â ¾ø´Â ³ë¸©ÀÌ´Ù. ¿¡¹Ä·¹ÀÌÅÍ¿¡ °¡Â¥ ¼¾¼ Á¤º¸¸¦ Àü´ÞÇÏ´Â °³¹ßÅøÀÌ ÀÖ±â´Â ÇÏÁö¸¸ ÁøÂ¥ ¼¾¼¿¡ ºñÇÒ ¹Ù´Â ¸øµÈ´Ù. µû¶ó¼ ¼¾¼ °ü·Ã ÄÚµå´Â ¹Ýµå½Ã ½ÇÀåºñ°¡ ÀÖ¾î¾ß¸¸ °³¹ß °¡´ÉÇÏ´Ù. ´ÙÀ½Àº »ï¼º °¶·°½Ã S¿¡¼ Á¶»çÇÑ ¼¾¼ ¸ñ·ÏÀÌ´Ù.
½ÇÀåºñ¶ó°í Çؼ ¸ðµç ¼¾¼¸¦ ´Ù ³»ÀåÇÑ °ÍÀº ¾Æ´Ï´Ù. ¿Âµµ°è³ª ÀÚÀ̷νºÄÚÇÁ µûÀ§ÀÇ ¼¾¼´Â ¾øÀ¸¸ç 5°³ÀÇ ¼¾¼°¡ ÀåÂøµÇ¾î ÀÖ´Ù. µå¹® °æ¿ì±â´Â ÇÏÁö¸¸ ÇÑ Å¸ÀÔ¿¡ ´ëÇØ ¿©·¯ °³ÀÇ ¼¾¼°¡ Á¦°øµÉ ¼öµµ ÀÖ´Ù. ´ÙÀ½ ¸Þ¼µå´Â ƯÁ¤ ŸÀÔ¿¡ ´ëÇÑ ´ëÇ¥ ¼¾¼¸¦ ±¸ÇÑ´Ù.
Sensor getDefaultSensor (int type)
¸ñ·ÏÀÌ ¾Æ´Ï¶ó Sensor °´Ã¼¸¦ ¸®ÅÏÇϹǷΠÁ¶»çµÈ ¼¾¼ °´Ã¼¸¦ ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. Áö¿øµÇÁö ¾Ê´Â ¼¾¼ÀÏ °æ¿ì´Â nullÀÌ ¸®ÅϵȴÙ. ¸ðµç Àåºñ¿¡ ¿øÇÏ´Â ¼¾¼°¡ ÀÖ´Ù°í º¸ÀåÇÒ ¼ö ¾øÀ¸¹Ç·Î ¿¡·¯ 󸮴 ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. ƯÁ¤ ŸÀÔÀÇ ¼¾¼°¡ ÇÊ¿äÇÒ °æ¿ì¿¡´Â ÀÌ ¸Þ¼µå·Î ±¸ÇÏ´Â °ÍÀÌ Á¦ÀÏ °£ÆíÇÏ´Ù.
¼¾¼´Â µ¶¸³µÈ Çϵå¿þ¾î ÀåºñÀ̹ǷΠº°µµÀÇ ¸í·ÉÀ» ³»¸®Áö ¾Ê´õ¶óµµ ºÎÆÃÇÑ Á÷ÈĺÎÅÍ Ç×»ó µ¿ÀÛÁßÀÌ´Ù. µû¶ó¼ Ãʱâȸ¦ µû·Î ÇÒ ÇÊ¿ä´Â ¾øÀ¸¸ç ÇÊ¿äÇÒ ¶§ ¿øÇÏ´Â °ªÀ» ¼¾¼·ÎºÎÅÍ Àü´Þ¹Þ±â¸¸ µÈ´Ù. ¼¾¼°ªÀº ²÷ÀÓ¾øÀÌ º¯Çϸç À̶§¸¶´Ù ¸®½º³Ê·Î º¯°æµÈ °ªÀ» Àü´ÞÇÑ´Ù. ¼¾¼ °ü¸®ÀÚÀÇ ´ÙÀ½ ¸Þ¼µå·Î ¸®½º³Ê¸¦ ¼³Ä¡ÇÏ°í ´ë±âÇÑ´Ù.
boolean registerListener (SensorEventListener listener, Sensor sensor, int rate [, Handler handler])
ù¹ø° Àμö°¡ ¼¾¼°ªÀ» Àü´Þ¹ÞÀ» ¸®½º³ÊÀε¥ Àá½Ã ÈÄ »ó¼¼ÇÏ°Ô ¿¬±¸ÇØ º¸ÀÚ. µÎ ¹ø° Àμö´Â ¸®½º³Ê¿Í ¿¬°áÇÒ ¼¾¼·Î¼ ¾î¶² Á¾·ùÀÇ °ªÀ» ¹ÞÀ» °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. ¿©·¯ ŸÀÔÀÇ ¼¾¼·ÎºÎÅÍ °ªÀ» ¹ÞÀ¸·Á¸é °¢ ŸÀÔ¿¡ ´ëÇØ ÀÌ ¸Þ¼µå¸¦ ¹Ýº¹ÀûÀ¸·Î È£ÃâÇÑ´Ù. ¼¼¹ø° Àμö rate´Â ¼¾¼·ÎºÎÅÍÀÇ °ª Àü´Þ ÁÖ±âÀÌ¸ç ´ÙÀ½ 4°¡Áö Áß Çϳª¸¦ Àü´ÞÇÑ´Ù. ¾Æ·¡ÂÊ °ªÀϼö·Ï °»½Å ÁֱⰡ ´õ »¡¶óÁø´Ù.
ÁÖ±â |
¼³¸í |
SENSOR_DELAY_UI |
UI °»½Å¿¡ ÇÊ¿äÇÑ Á¤µµÀÇ ÁÖ±â |
SENSOR_DELAY_NORMAL |
È¸é ¹æÇâ Àüȯ µîÀÇ ÀÏ»óÀûÀÎ º¯È ÁÖ±â |
SENSOR_DELAY_GAME |
°ÔÀÓ¿¡ ÀûÇÕÇÑ Á¤µµÀÇ ÁÖ±â |
SENSOR_DELAY_FASTEST |
ÃÖ´ëÇÑÀÇ ºü¸¥ ÁÖ±â |
UI °»½ÅÀ» À§ÇÑ ¼¾¼´Â ¼Óµµ°¡ ´À·Áµµ ¹«°üÇÏ¸ç °ÔÀÓÀº ¹ÝÀÀ ¼Óµµ°¡ Áß¿äÇϹǷΠÈξÀ ´õ ÀÚÁÖ °ªÀÌ Àü´ÞµÈ´Ù. NORMALÀº Àû´çÇÑ ºóµµ·Î °ªÀ» Àü´ÞÇϸç FASTEST´Â °¡´ÉÇÑ ÀÚÁÖ °ªÀ» Àü´ÞÇÒ °ÍÀÌ´Ù. ÀÌ Àμö°¡ ÁöÁ¤ÇÏ´Â ÁÖ±â´Â ¾îµð±îÁö³ª ÈùÆ®ÀÏ »ÓÀÌ¸ç ½ÇÁ¦ ÁÖ±â´Â ½Ã½ºÅÛ »çÁ¤¿¡ µû¶ó ¾à°£¾¿ ¿ÀÂ÷°¡ ÀÖµÇ º¸ÅëÀº ÁöÁ¤ÇÑ °Íº¸´Ù ´õ ÀÚÁÖ Àü´ÞµÈ´Ù. ÇÊ¿äÇѸ¸ÅÀÇ ºóµµ¸¦ Àß ¼±ÅÃÇÏ¿© Á¤È®µµ¿Í ¹èÅ͸® »ç¿ë·®ÀÇ ±ÕÇüÁ¡À» ã´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.
¸¶Áö¸· Àμö´Â ¼¾¼ À̺¥Æ®¸¦ ¹ÞÀ» Çڵ鷯ÀÌµÇ °ªÀÌ º¯°æµÉ ¶§¸¶´Ù ¸®½º³Ê °´Ã¼°¡ ¸Å¹ø È£ÃâµÇ¹Ç·Î »ý·«Çصµ ¹«¹æÇÏ´Ù. ¼¾¼°ªÀ» ´Ù¸¥ ½º·¹µå·Î º¸³»°íÀÚ ÇÒ ¶§ Á¤µµ¿¡¸¸ »ç¿ëµÈ´Ù. ¸®½º³Ê°¡ ¼³Ä¡µÇ¸é true¸¦ ¸®ÅÏÇÏ¸ç °ðÀå ¼¾¼·ÎºÎÅÍ °ªÀÌ Àü´ÞµÈ´Ù. ¸®½º³Ê¸¦ ÇØÁ¦ÇÒ ¶§´Â ´ÙÀ½ ¸Þ¼µå¸¦ È£ÃâÇÑ´Ù. ƯÁ¤ ¼¾¼¿¡ ´ëÇÑ ¸®½º³Ê¸¸ ÁßÁöÇÒ ¼öµµ ÀÖ°í µî·ÏµÈ Àüü ¼¾¼¸¦ ÇѲ¨¹ø¿¡ Ãë¼ÒÇÒ ¼öµµ ÀÖ´Ù.
void unregisterListener (SensorEventListener listener [, Sensor sensor])
¼¾¼µµ ¹èÅ͸®¸¦ ¼Ò¸ðÇÏ¸ç ºÒÇÊ¿äÇÑ ¸®½º³Ê°¡ ³²¾Æ ÀÖÀ¸¸é CPU°¡ ¹ÙºüÁö¹Ç·Î »ç¿ëÀÌ ³¡³µÀ¸¸é ¸®½º³Ê¸¦ Áï½Ã ÇØÁ¦ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¼¾¼ À̺¥Æ® ¸®½º³Ê ÀÎÅÍÆäÀ̽º´Â ´ÙÀ½ µÎ °³ÀÇ ¸Þ¼µå¸¦ Á¤ÀÇÇÑ´Ù.
void onAccuracyChanged (Sensor sensor, int accuracy)
void onSensorChanged (SensorEvent event)
¼¾¼ÀÇ Á¤È®µµ°¡ º¯°æµÇ¸é onAccuracyChanged ¸Þ¼µå°¡ È£ÃâµÇ¸ç Á¤È®µµ´Â Á¤¼ö°ª Çϳª·Î Àü´ÞµÈ´Ù. GPS¿Í´Â ´Þ¸® ³»Àå ¼¾¼´Â Á¤È®µµÀÇ º¯È°¡ ±ØÈ÷ µå¹°¾î¼ ¿Ø¸¸Çؼ´Â ÀÌ ¸Þ¼µå°¡ È£ÃâµÇÁö ¾Ê´Â´Ù. Á¤È®µµ º¯°æ½Ã Ưº°È÷ ó¸®ÇÒ ÀÛ¾÷ÀÌ ¾ø´Ù¸é »ý·«Çصµ ¹«¹æÇÏ¸ç ¼¾¼°ª¿¡µµ Á¤È®µµ°¡ Æ÷ÇԵǾî ÀÖÀ¸¹Ç·Î ¿©±â¼ ±»ÀÌ Æ¯º°ÇÑ Ã³¸®¸¦ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. º¸Åë ºó ¸Þ¼µå·Î Á¤ÀÇÇÑ´Ù.
°¡Àå Áß¿äÇÑ ¸Þ¼µå´Â onSensorChangedÀε¥ ¼¾¼·ÎºÎÅÍ ÃøÁ¤µÈ °ªÀÌ ÀÌ ¸Þ¼µå·Î Àü´ÞµÈ´Ù. ¼¾¼°ªÀº SensorEvent °´Ã¼·Î Àü´ÞµÈ´Ù. ÀÌ °´Ã¼´Â ½Ã½ºÅÛÀÌ °ü¸®ÇϹǷΠÀбâ Àü¿ëÀÌ¸ç »çº»À» º¹»çÇؼ´Â ¾ÈµÈ´Ù. Á¤º¸ Àü´ÞÀ» À§ÇÑ °´Ã¼À̹ǷΠº°µµÀÇ ¸Þ¼µå´Â ¾øÀ¸¸ç 4°³ÀÇ °ø°³µÈ Çʵ常 °¡Áø´Ù.
Çʵå |
¼³¸í |
int accuracy |
Á¤È®µµ |
Sensor sensor |
°ªÀ» Àü´ÞÇÑ ¼¾¼ °´Ã¼ |
long timestamp |
À̺¥Æ®°¡ ¹ß»ýÇÑ ½Ã°£ |
float[] values |
¼¾¼·ÎºÎÅÍ Àü´ÞµÈ °ª |
ÇöÀç Á¤È®µµ, ¼¾¼ °´Ã¼, ÃøÁ¤ ½ÃÁ¡ µîµµ Àü´ÞµÇÁö¸¸ °¡Àå Áß¿äÇÑ °ªÀº ¼¾¼·ÎºÎÅÍ ÃøÁ¤µÈ °ªÀ» ´ãÀº values ¹è¿ÀÌ´Ù. ¼¾¼¿¡ µû¶ó Àü´ÞµÇ´Â °ªÀÇ °³¼ö°¡ ´Ù¸£¹Ç·Î ¹è¿ ÇüÅ·ΠµÇ¾î ÀÖ´Ù. Á¶µµ³ª ±ÙÁ¢ ¼¾¼´Â values[0]¸¸ ÀÐÀ¸¸é µÇÁö¸¸ ¹æÇâÀ̳ª °¡¼Ó ¼¾¼Ã³·³ Á» ´õ º¹ÀâÇÑ Á¤º¸´Â ¼¼ °³ÀÇ °ªÀ» ´Ù Àоî¾ß ÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¸ðµç ¼¾¼¿¡ ´ëÇÑ ¸®½º³Ê¸¦ µî·ÏÇØ ³õ°í ÀÔ·ÂµÈ °ªÀ» ¹®ÀÚ¿ ÇüÅ·Π´ýÇÁÇÑ´Ù.
hard_SensorDump |
public class hard_SensorDump extends Activity {
SensorManager mSm;
TextView mTxtLight, mTxtProxi, mTxtPress, mTxtAccel, mTxtMagnetic, mTxtOrient;
int mLightCount, mProxiCount, mPressCount, mAccelCount, mMagneticCount, mOrientCount;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hard_sensordump);
mSm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
mTxtLight =(TextView)findViewById(R.id.light);
mTxtProxi =(TextView)findViewById(R.id.proxi);
mTxtPress =(TextView)findViewById(R.id.press);
mTxtOrient =(TextView)findViewById(R.id.orient);
mTxtAccel =(TextView)findViewById(R.id.accel);
mTxtMagnetic =(TextView)findViewById(R.id.magnetic);
}
protected void onResume() {
super.onResume();
int delay = SensorManager.SENSOR_DELAY_UI;
mSm.registerListener(mSensorListener,
mSm.getDefaultSensor(Sensor.TYPE_LIGHT), delay);
mSm.registerListener(mSensorListener,
mSm.getDefaultSensor(Sensor.TYPE_PROXIMITY), delay);
mSm.registerListener(mSensorListener,
mSm.getDefaultSensor(Sensor.TYPE_PRESSURE), delay);
mSm.registerListener(mSensorListener,
mSm.getDefaultSensor(Sensor.TYPE_ORIENTATION), delay);
mSm.registerListener(mSensorListener,
mSm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), delay);
mSm.registerListener(mSensorListener,
mSm.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), delay);
mSm.registerListener(mSensorListener,
mSm.getDefaultSensor(Sensor.TYPE_TEMPERATURE), delay);
mSm.registerListener(mSensorListener,
mSm.getDefaultSensor(Sensor.TYPE_GYROSCOPE), delay);
}
protected void onPause() {
super.onPause();
mSm.unregisterListener(mSensorListener);
}
SensorEventListener mSensorListener = new SensorEventListener() {
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// Ưº°È÷ ó¸®ÇÒ ÇÊ¿ä¾øÀ½
}
public void onSensorChanged(SensorEvent event) {
// ½Å·Ú¼º¾ø´Â °ªÀº ¹«½Ã
if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) {
//return;
}
float[] v = event.values;
switch (event.sensor.getType()) {
case Sensor.TYPE_LIGHT:
mTxtLight.setText("Á¶µµ = " + ++mLightCount + "ȸ : " + v[0]);
break;
case Sensor.TYPE_PROXIMITY:
mTxtProxi.setText("±ÙÁ¢ = " + ++mProxiCount + "ȸ : " + v[0]);
break;
case Sensor.TYPE_PRESSURE:
mTxtPress.setText("¾Ð·Â = " + ++mPressCount + "ȸ : " + v[0]);
break;
case Sensor.TYPE_ORIENTATION:
mTxtOrient.setText("¹æÇâ = " + ++mOrientCount + "ȸ : \n azimuth:" +
v[0] + "\n pitch:" + v[1] + "\n roll:" + v[2]);
break;
case Sensor.TYPE_ACCELEROMETER:
mTxtAccel.setText("°¡¼Ó = " + ++mAccelCount + "ȸ : \n X:" +
v[0] + "\n Y:" + v[1] + "\n Z:" + v[2]);
break;
case Sensor.TYPE_MAGNETIC_FIELD:
mTxtMagnetic.setText("ÀÚ±â = " + ++mMagneticCount + "ȸ : \n X:" +
v[0] + "\n Y:" + v[1] + "\n Z:" + v[2]);
break;
}
}
};
}
·¹À̾ƿô¿¡´Â °ªÀ» Ãâ·ÂÇÒ ÅؽºÆ® ºä ¿©¼¸°³°¡ ¼öÁ÷À¸·Î ³ª¶õÈ÷ ¹èÄ¡µÇ¾î ÀÖÀ¸¸ç Äڵ嵵 ¾ÆÁÖ Á÷°üÀûÀÌ´Ù. ¾×ƼºñƼ°¡ È°¼ºÈµÇ´Â onResume¿¡¼ ¸ðµç ¼¾¼¿¡ ´ëÇÑ ¸®½º³Ê¸¦ ´Ù µî·ÏÇß´Ù. ¼¾¼°ªÀ» ´ýÇÁÇØ º¸°í °ªÀÇ º¯È¸¦ °üÂûÇÏ´Â °ÍÀÌ ÁÖµÈ ¸ñÀûÀ̹ǷΠÀü´Þ ¼Óµµ´Â ÃÖ´ëÇÑ ´À¸®°Ô ÁöÁ¤ Çß´Ù. ÇöÀç Àåºñ¿¡¼ Áö¿øµÇÁö ¾Ê´Â ¼¾¼´Â getDefaultSensor°¡ nullÀ» ¸®ÅÏÇÏÁö¸¸ µî·Ï ¸Þ¼µå°¡ null ¼¾¼¸¦ ¹«½ÃÇϵµ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î º°µµÀÇ ¿¡·¯ 󸮴 ÇÏÁö ¾Ê¾Æµµ »ó°ü¾ø´Ù.
µî·ÏµÈ ¼¾¼´Â onPause¿¡¼ ¸ðµÎ ÇØÁ¦ÇÑ´Ù. ¹é±×¶ó¿îµå¿¡ ÀÖÀ» ¶§´Â ±»ÀÌ ¼¾¼ ÀÔ·ÂÀ» ¹ÞÀ» ÇÊ¿ä°¡ ¾ø±â ¶§¹®ÀÌ´Ù. ¹°·Ð ÇÊ¿äÇÏ´Ù¸é ¹é±×¶ó¿îµå¿¡¼µµ ¼¾¼ ÀÔ·ÂÀ» °è¼Ó ¹ÞÀ» ¼ö ÀÖ´Ù. ¸®½º³Ê¸¦ µî·ÏÇÑ Á÷ÈĺÎÅÍ ¹Ù·Î µ¿ÀÛÀ» ½ÃÀÛÇÏ¿© °ªÀÌ º¯°æµÉ ¶§¸¶´Ù ¸Þ¼µå°¡ È£ÃâµÉ °ÍÀÌ´Ù. onSensorChanged ¸Þ¼µå´Â ¼¾¼·ÎºÎÅÍ Àü´ÞµÈ °ªÀ» ¹®ÀÚ¿ ÇüÅ·ΠÁ¶¸³ÇÏ¿© ´ëÀÀµÇ´Â ÅؽºÆ® ºä·Î Ãâ·ÂÇÑ´Ù. Àåºñ¸¦ Á¿ì·Î Èçµé°Å³ª ¹æÇâÀ» ¹Ù²Ù¸é °ªÀÌ Áï½Ã °»½ÅµÉ °ÍÀÌ´Ù. ¿Âµµ°è³ª ÀÚÀ̷νºÄÚÇÁ´Â ¾ÆÁ÷ Áö¿øÇÏ´Â ½ÇÀåºñ°¡ µå¹°¾î¼ »ý·«Çß´Ù.
Á¶µµ ¼¾¼´Â ·è½º ´ÜÀ§ÀÇ ¹à±â¸¦ Àü´ÞÇÑ´Ù. ÁÖ·Î ÁÖº¯ÀÇ ¹à±â¿¡ µû¶ó ¾×Á¤ÀÇ ÈÖµµ¸¦ ÀÚµ¿À¸·Î Á¶Á¤ÇÔÀ¸·Î½á ¹èÅ͸®¸¦ Àý¾àÇÏ´Â ¿ëµµ·Î »ç¿ëµÈ´Ù. ÁÖº¯ÀÌ ¾îµÎ¿ì¸é ¾×Á¤µµ °°ÀÌ ¾îµÎ¿öÁö°í ¾ß¿ÜÀÇ ¹àÀº °÷ÀÌ¸é ¾×Á¤µµ °°ÀÌ ¹à¾ÆÁø´Ù. Á¶µµ ¼¾¼(º¸Åë ÀåºñÀÇ Àü¸é À§ÂÊ¿¡ ÀÖ´Ù)¸¦ ¼Õ°¡¶ôÀ¸·Î °¡·Á º¸°Å³ª ÈÄ·¹½¬¸¦ ºñÃß¸é °ªÀÌ º¯ÇÏ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¹à±â´Â ±×´ÙÁö ±Þ°ÝÇÏ°Ô º¯ÇÏÁö ¾ÊÀ¸¹Ç·Î ´Ù¸¥ ¼¾¼º¸´Ù´Â Àü´Þ ºóµµ°¡ ³·Àº ÆíÀÌ´Ù.
±ÙÁ¢ ¼¾¼´Â Àåºñ ÁÖº¯¿¡ ¹°Ã¼°¡ ÀÖ´ÂÁö¸¦ ÆǺ°ÇÑ´Ù. À̷лóÀ¸·Î´Â ¼¾Æ¼¹ÌÅÍ ´ÜÀ§ÀÇ °Å¸®°¡ Á¶»çµÇ¾î¾ß Çϳª º¸ÅëÀº ¹ÐÂø, ¶³¾îÁü µÎ °¡Áö »óÅ Áß Çϳª¸¸ Á¶»çµÈ´Ù. ÀÌ ¼¾¼´Â ÅëÈÁß¿¡ Àåºñ¸¦ ¾ó±¼¿¡ ¹ÐÂøÇÒ ¶§ ȸéÀ» ²ûÀ¸·Î½á ¿Àµ¿ÀÛÀ» ¹æÁöÇÏ°í ¹èÅ͸®¸¦ Àý¾àÇÏ´Â ¿ëµµ·Î ÁÖ·Î »ç¿ëµÈ´Ù. Á¤Àü½Ä ȸéÀÇ °æ¿ì »´ÀÌ ¾×Á¤¿¡ ´êÀ¸¸é Àǵµ¿Í ´Þ¸® ÀüÈ°¡ ²÷¾îÁú ¼öµµ ÀÖ¾î ±ÙÁ¢ ¼¾¼·Î ¾×Á¤À» ÅëÁ¦ÇÑ´Ù. ½Ç½À Àåºñ¿¡´Â ¾Ð·Â ¼¾¼°¡ ¾ø¾î °ªÀÌ Àü´ÞµÇÁö ¾Ê´Âµ¥ ¾Ð·ÂÀ» °¨ÁöÇÏ´Â ´Ù¸¥ Àåºñ¿¡¼´Â °ªÀÌ Á¶»çµÉ °ÍÀÌ´Ù.
³ª¸ÓÁö ¼¾¼°ªµéÀº Àü´ÞµÈ °ªÀ» ±×´ë·Î ´ýÇÁÇØ º¸±â¸¸ Çߴµ¥ ¼ýÀÚ¸¸ Àо ¾î¶² ÀǹÌÀÎÁö ¾ó¸¥ ÀÌÇØÇϱ⠾î·Æ´Ù. ¹º°¡ º¹ÀâÇØ º¸ÀÌ´Â ½Ç¼ö¸¸ ÀÜ¶à ³ª¿µÇ¾î ÀÖ¾î Á÷°üÀûÀÌÁö ¾ÊÀ¸¸ç °ªÀÌ ³Ê¹« ºü¸£°Ô º¯ÇØ °üÂûÇϱ⿡µµ Á¤½Å »ç³³´Ù. ÀÌ °ªµéÀÌ ±¸Ã¼ÀûÀ¸·Î ¾î¶² Àǹ̸¦ °¡Áö´ÂÁö´Â ÀÌ·ÐÀ» Á» »ìÆì º¸°í Çϳª¾¿ ¿¹Á¦¸¦ ¸¸µé¾î º¸¸ç Â÷±ÙÈ÷ ¿¬±¸ÇØ º¸ÀÚ.