2011-06-13 3 views
2

응용 프로그램 전체에서 실행되는 스레드를 어떻게 구현할 것입니까? 나는 서비스를 보았지만 나는 이것이 내가 원하는 바가 아니라는 것을 확신한다. 응용 프로그램이 종료 된 경우에도 스레드가 계속 확인하고 싶지 않습니다. 난 그냥 사용자가 자신의 귀에 전화를 제기 있는지 확인하기 위해 지속적으로 응용 프로그램의 백그라운드에서 실행 스레드를 (비록 내가 활동 사이를 전환) 싶어요. 사용자가 작업을 수행하면 작업이 수행됩니다. 이런 식의 예가 있습니까?하드웨어 근접 센서를 모니터링하는 연속 스레드

답변

5

스레드 또는 서비스가 필요하지 않습니다. SensorManager에 대한 Android API 문서의 예를 참조하세요. 또한 예를 보려면 아래를 참조하십시오.

public class SensorActivity extends Activity, implements SensorEventListener { 
    private final SensorManager mSensorManager; 
    private final Sensor mSensor; 

    public SensorActivity() { 
     mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
     mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 
    } 

    protected void onResume() { 
     super.onResume(); 
     mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL); 
    } 

    protected void onPause() { 
     super.onPause(); 
     mSensorManager.unregisterListener(this); 
    } 

    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    } 

    public void onSensorChanged(SensorEvent event) { 
     // TODO: implement your action here. 
    } 
} 
1

이것은 서비스로서 가장 잘 수행됩니다. 활동이 시작될 때 서비스에 바인딩하고 활동이 완료되면 바인딩을 해제합니다. 서비스는 연결될 때 청취를 시작하고 바인딩되지 않으면 중단되어야합니다.

+0

이제이 서비스 내부에서 센서 검사 스레드를 실행합니까? 그것이 행동을 인식하면 특정 과제를 수행합니까? –

+1

이것을 관리하기 위해 스레드를 실행할 필요가 없으며 가속도계 센서 서비스에 리스너를 등록하기 만하면됩니다. Google SENSOR_ACCELEROMETER을 (를) 사용하는 경우 다양한 모션 유형 (예 : 흔들림)을 감지하는 다양한 사례가 있습니다. – mah

관련 문제