2011-09-27 3 views
4

Android 용 게임을 작성 중이며 가속도계를 입력 용으로 사용할 수 있기를 원합니다.getSensorList()와 Android SensorManager의 getDefaultSensor() 비교

두 가지 방법으로 센서를 얻는 방법 중 하나는 첫 번째 요소 인 SensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER)을 사용하고 다른 하나는 SensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)입니다.

getDefaultSensor doc은 "합성"센서를 반환 할 수 있으므로 "원시"센서를 원한다면 getSensorList을 사용해야합니다.

복합 또는 원시 센서의 차이점은 무엇입니까? 이것은 심지어 가속도계에 적용됩니까? 누구나 복수 또는 복합 가속도계가 포함 된 기기를 사용해 본 경험이 있습니까? (또는 다른 센서?)

답변

3

Google의 문서는 여기 구현 방법에 앞서 있습니다. 내가 발견 (소스 2.3.1 틱 것으로 보인다 있음) code repository을 통해 탐색 :

public Sensor getDefaultSensor(int type) { 
    // TODO: need to be smarter, for now, just return the 1st sensor 
    List<Sensor> l = getSensorList(type); 
    return l.isEmpty() ? null : l.get(0); 
} 

그래서 실제 차이가 없다 (그리고 나는 그들이 정말 나중에 하나를 추가 할 수 있다고 생각하지 않습니다) 센서 사이에 getDefaultSensor()getSensorList()에서 반환되었습니다.

+0

더 이상 제공되지 않습니다. 아래를 참조하십시오. –

3

업데이트 : 그들은 롤리팝에 getDefaultSensor 방법을 업데이트 한, 지금은 차이가 있습니다 :

public Sensor getDefaultSensor(int type) { 
    // TODO: need to be smarter, for now, just return the 1st sensor 
    List<Sensor> l = getSensorList(type); 
    boolean wakeUpSensor = false; 
    // For the following sensor types, return a wake-up sensor. These types are by default 
    // defined as wake-up sensors. For the rest of the SDK defined sensor types return a 
    // non_wake-up version. 
    if (type == Sensor.TYPE_PROXIMITY || type == Sensor.TYPE_SIGNIFICANT_MOTION || 
      type == Sensor.TYPE_TILT_DETECTOR || type == Sensor.TYPE_WAKE_GESTURE || 
      type == Sensor.TYPE_GLANCE_GESTURE || type == Sensor.TYPE_PICK_UP_GESTURE) { 
     wakeUpSensor = true; 
    } 

    for (Sensor sensor : l) { 
     if (sensor.isWakeUpSensor() == wakeUpSensor) return sensor; 
    } 
    return null; 
} 

지정된 유형에 사용할 수있는 다수의 센서가 그렇다면, getDefaultSensor가 아닌 웨이크 업을 반환은 그런데

(기본 타입 웨이크 센서로서 정의 실제로 그 위에 6 중 하나가 아닌) 버젼은 Sensor.TYPE_TILT_DETECTOR, Sensor.TYPE_WAKE_GESTURE, Sensor.TYPE_GLANCE_GESTURE Sensor.TYPE_PICK_UP_GESTURE와 같이 상기 SDK에 숨겨진 그들 시스템 UI 용으로 만 사용됩니다. 센서에 대한 자세한 내용은 Sensor.java 소스