W.A 저장소

AccelerorMeter Sensor 사용 소스 본문

Programing

AccelerorMeter Sensor 사용 소스

W.A 2010. 7. 15. 16:36
1. Activity 생성(onCreate)시 SensorService를 얻어온다.
SensorMamager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor accelerormeterSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

2. Sensor가 잘 생성되었다면은 SensorManager에 등록을 한다.
if (accelerormeterSensor != null)
sensorManager.registerListener(this, accelerormeterSensor ,SensorManager.SENSOR_DELAY_GAME);

3. 등록까지 완료 되었다면은 이제 가속도센서(AccelerorMeterSensor)를 사용할 수 있다.
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
// 원하는 기능을 사용 가능함.
}

소스 코드
package com.karyu.testkaryu;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;

public class TestKaRyuActivity extends Activity implements SensorEventListener {
    /** Called when the activity is first created. */
private SensorManager sensorManager;
private TextView aTextx = null;
private TextView aTexty = null;
private TextView aTextz = null;
private TextView result = null;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.main);
        
        aTextx = (TextView)findViewById(R.id.TextView01);
        aTexty = (TextView)findViewById(R.id.TextView02);
        aTextz = (TextView)findViewById(R.id.TextView03);
        result = (TextView)findViewById(R.id.TextView04);
        
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
       
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
       
        List<Sensor> sensors = sensorManager
          .getSensorList(Sensor.TYPE_ACCELEROMETER);
        
        result.setText("No");
        if (sensors.size() > 0) {
         result.setText("Yes");
         sensorManager.registerListener(this, sensors.get(0),
         SensorManager.SENSOR_DELAY_GAME);
        } else {
         result.setText("Failed");
        }
    }
    
    @Override
    protected void onDestroy() {
     super.onDestroy();
     sensorManager.unregisterListener(this);
    }
    
    @Override
    public void onAccuracyChanged(final Sensor sensor, int accuracy) {
     // TODO Auto-generated method stub
    }
    
    @Override
    public void onSensorChanged(final SensorEvent event) {
     Sensor sensor = event.sensor;
     switch (sensor.getType()) {
     case Sensor.TYPE_ACCELEROMETER:
     //Log.d(LOG_TAG, "ACCELEROMETER : " + event.values[0] + ","
     //+ event.values[1] + "," + event.values[2]);
     aTextx.setText("X =" + event.values[0]);
     aTexty.setText("Y =" + event.values[1]);
     aTextz.setText("Z =" + event.values[2]);
     break;
     default:
     break;
     }
    }
}

'Programing' 카테고리의 다른 글

Programming Reference  (0) 2010.07.16
Screen Capture Class(화면 캡쳐 클래스) Robot  (0) 2010.07.16
Android Sensor Simulator 사용법  (0) 2010.07.15
Java 접근자  (0) 2010.07.12
객체지향의 3대 요소  (0) 2010.07.12