1.¼¾¼­ °ü¸®ÀÚ

1.¼¾¼­ °ü¸®ÀÚ

¸ð¹ÙÀÏ ÆùÀº °¢Á¾ ¼¾¼­¸¦ ³»ÀåÇÏ¿© ´Ù¾çÇÑ ÁÖº¯ »óȲµéÀ» ÀνÄÇØ ³½´Ù. ¼¾¼­ÀÇ Á¤º¸¸¦ È°¿ëÇϸé ÆùÀ» µ¹¸®±â³ª Èçµé±â¸¸ Çصµ ¸í·ÉÀ» Àü´ÞÇÒ ¼ö ÀÖÀ¸¸ç È­¸éÀ» ÅÍÄ¡ÇÏÁö ¾Ê°íµµ °ÔÀÓÀ» Áñ±æ ¼ö ÀÖ´Ù. À¥ ºê¶ó¿ìÀú´Â ÆùÀÇ ¹æÇâ¿¡ µû¶ó È­¸é ¹èÄ¡¸¦ ÀÚµ¿À¸·Î Á¶Á¤Çϱ⵵ ÇÑ´Ù. Æù ÀÚü°¡ »õ·Î¿î 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ÀÌ ¸®ÅϵȴÙ. ¸ðµç Àåºñ¿¡ ¿øÇÏ´Â ¼¾¼­°¡ ÀÖ´Ù°í º¸ÀåÇÒ ¼ö ¾øÀ¸¹Ç·Î ¿¡·¯ 󸮴 ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. ƯÁ¤ ŸÀÔÀÇ ¼¾¼­°¡ ÇÊ¿äÇÒ °æ¿ì¿¡´Â ÀÌ ¸Þ¼­µå·Î ±¸ÇÏ´Â °ÍÀÌ Á¦ÀÏ °£ÆíÇÏ´Ù.

2.¼¾¼­ ¸®½º³Ê

¼¾¼­´Â µ¶¸³µÈ Çϵå¿þ¾î ÀåºñÀ̹ǷΠº°µµÀÇ ¸í·ÉÀ» ³»¸®Áö ¾Ê´õ¶óµµ ºÎÆÃÇÑ Á÷ÈĺÎÅÍ Ç×»ó µ¿ÀÛÁßÀÌ´Ù. µû¶ó¼­ ÃʱâÈ­¸¦ µû·Î ÇÒ ÇÊ¿ä´Â ¾øÀ¸¸ç ÇÊ¿äÇÒ ¶§ ¿øÇÏ´Â °ªÀ» ¼¾¼­·ÎºÎÅÍ Àü´Þ¹Þ±â¸¸ µÈ´Ù. ¼¾¼­°ªÀº ²÷ÀÓ¾øÀÌ º¯Çϸç À̶§¸¶´Ù ¸®½º³Ê·Î º¯°æµÈ °ªÀ» Àü´ÞÇÑ´Ù. ¼¾¼­ °ü¸®ÀÚÀÇ ´ÙÀ½ ¸Þ¼­µå·Î ¸®½º³Ê¸¦ ¼³Ä¡ÇÏ°í ´ë±âÇÑ´Ù.

 

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 ¸Þ¼­µå´Â ¼¾¼­·ÎºÎÅÍ Àü´ÞµÈ °ªÀ» ¹®ÀÚ¿­ ÇüÅ·ΠÁ¶¸³ÇÏ¿© ´ëÀÀµÇ´Â ÅؽºÆ® ºä·Î Ãâ·ÂÇÑ´Ù. Àåºñ¸¦ Á¿ì·Î Èçµé°Å³ª ¹æÇâÀ» ¹Ù²Ù¸é °ªÀÌ Áï½Ã °»½ÅµÉ °ÍÀÌ´Ù. ¿Âµµ°è³ª ÀÚÀ̷νºÄÚÇÁ´Â ¾ÆÁ÷ Áö¿øÇÏ´Â ½ÇÀåºñ°¡ µå¹°¾î¼­ »ý·«Çß´Ù.

Á¶µµ ¼¾¼­´Â ·è½º ´ÜÀ§ÀÇ ¹à±â¸¦ Àü´ÞÇÑ´Ù. ÁÖ·Î ÁÖº¯ÀÇ ¹à±â¿¡ µû¶ó ¾×Á¤ÀÇ ÈÖµµ¸¦ ÀÚµ¿À¸·Î Á¶Á¤ÇÔÀ¸·Î½á ¹èÅ͸®¸¦ Àý¾àÇÏ´Â ¿ëµµ·Î »ç¿ëµÈ´Ù. ÁÖº¯ÀÌ ¾îµÎ¿ì¸é ¾×Á¤µµ °°ÀÌ ¾îµÎ¿öÁö°í ¾ß¿ÜÀÇ ¹àÀº °÷ÀÌ¸é ¾×Á¤µµ °°ÀÌ ¹à¾ÆÁø´Ù. Á¶µµ ¼¾¼­(º¸Åë ÀåºñÀÇ Àü¸é À§ÂÊ¿¡ ÀÖ´Ù)¸¦ ¼Õ°¡¶ôÀ¸·Î °¡·Á º¸°Å³ª ÈÄ·¹½¬¸¦ ºñÃß¸é °ªÀÌ º¯ÇÏ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¹à±â´Â ±×´ÙÁö ±Þ°ÝÇÏ°Ô º¯ÇÏÁö ¾ÊÀ¸¹Ç·Î ´Ù¸¥ ¼¾¼­º¸´Ù´Â Àü´Þ ºóµµ°¡ ³·Àº ÆíÀÌ´Ù.

±ÙÁ¢ ¼¾¼­´Â Àåºñ ÁÖº¯¿¡ ¹°Ã¼°¡ ÀÖ´ÂÁö¸¦ ÆǺ°ÇÑ´Ù. À̷лóÀ¸·Î´Â ¼¾Æ¼¹ÌÅÍ ´ÜÀ§ÀÇ °Å¸®°¡ Á¶»çµÇ¾î¾ß Çϳª º¸ÅëÀº ¹ÐÂø, ¶³¾îÁü µÎ °¡Áö »óÅ Áß Çϳª¸¸ Á¶»çµÈ´Ù. ÀÌ ¼¾¼­´Â ÅëÈ­Áß¿¡ Àåºñ¸¦ ¾ó±¼¿¡ ¹ÐÂøÇÒ ¶§ È­¸éÀ» ²ûÀ¸·Î½á ¿Àµ¿ÀÛÀ» ¹æÁöÇÏ°í ¹èÅ͸®¸¦ Àý¾àÇÏ´Â ¿ëµµ·Î ÁÖ·Î »ç¿ëµÈ´Ù. Á¤Àü½Ä È­¸éÀÇ °æ¿ì »´ÀÌ ¾×Á¤¿¡ ´êÀ¸¸é Àǵµ¿Í ´Þ¸® ÀüÈ­°¡ ²÷¾îÁú ¼öµµ ÀÖ¾î ±ÙÁ¢ ¼¾¼­·Î ¾×Á¤À» ÅëÁ¦ÇÑ´Ù. ½Ç½À Àåºñ¿¡´Â ¾Ð·Â ¼¾¼­°¡ ¾ø¾î °ªÀÌ Àü´ÞµÇÁö ¾Ê´Âµ¥ ¾Ð·ÂÀ» °¨ÁöÇÏ´Â ´Ù¸¥ Àåºñ¿¡¼­´Â °ªÀÌ Á¶»çµÉ °ÍÀÌ´Ù.

³ª¸ÓÁö ¼¾¼­°ªµéÀº Àü´ÞµÈ °ªÀ» ±×´ë·Î ´ýÇÁÇØ º¸±â¸¸ Çߴµ¥ ¼ýÀÚ¸¸ Àо´Â ¾î¶² ÀǹÌÀÎÁö ¾ó¸¥ ÀÌÇØÇϱ⠾î·Æ´Ù. ¹º°¡ º¹ÀâÇØ º¸ÀÌ´Â ½Ç¼ö¸¸ ÀÜ¶à ³ª¿­µÇ¾î ÀÖ¾î Á÷°üÀûÀÌÁö ¾ÊÀ¸¸ç °ªÀÌ ³Ê¹« ºü¸£°Ô º¯ÇØ °üÂûÇϱ⿡µµ Á¤½Å »ç³³´Ù. ÀÌ °ªµéÀÌ ±¸Ã¼ÀûÀ¸·Î ¾î¶² Àǹ̸¦ °¡Áö´ÂÁö´Â ÀÌ·ÐÀ» Á» »ìÆì º¸°í Çϳª¾¿ ¿¹Á¦¸¦ ¸¸µé¾î º¸¸ç Â÷±ÙÈ÷ ¿¬±¸ÇØ º¸ÀÚ.