2012-08-14 3 views
7
public class MainActivity extends Activity implements SensorEventListener { 
    private TextView temperaturelabel; 
    private SensorManager sensormanager; 
    private Sensor temperature; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    temperaturelabel = (TextView) findViewById(R.id.text); 

    sensormanager = (SensorManager)getSystemService(SENSOR_SERVICE); 

    temperature= sensormanager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE); 

    temperaturelabel.setText(""+temperature.getPower()); 
} 

protected void onResume() { 
    super.onResume(); 
    sensormanager.registerListener(this, temperature, SensorManager.SENSOR_DELAY_FASTEST); 
} 

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

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

public void onSensorChanged(SensorEvent event) { 
     if (event.sensor.getType() != Sensor.TYPE_AMBIENT_TEMPERATURE) return; 

     temperaturelabel.setText(""+temperature.getPower()); 
    } 
} 

기기에서 온도를 받고 싶습니다.Android의 온도 센서

이 코드를 작성했으며 HTC One X에서이 코드를 시도했지만 작동하지 않았습니다.

+0

출력 또는 오류를 게시 할 수 있습니까? – prayagupd

+0

아무것도하지 못했습니다. 오류 없음. 알림 없음. 결과 없음 – Furkan

+0

HTC One X에 온도 센서가 있습니까? 물론 – nkr

답변

6

htc one x의 사양과 마찬가지로이 장치에는 온도 센서가 없습니다.

official specifications을 살펴보십시오.

+0

ovv. 당신 말이 맞아요. 감사합니다 – Furkan

+2

안드로이드 마켓에는 "Andro Sensor"라는 앱이 있습니다.이 앱은 기기에 사용할 수있는 센서 및 사용할 수없는 센서에 대한 정보를 제공합니다. 시도해보십시오. – AndroidCrazy

1

현재 온도 센서가있는 장치는 거의 없습니다 (예 : Samsung S4).

센서를 사용할 수있는 경우 당신은 항상 즉, 테스트해야합니다, 는 {당신이 HTC에 할 수있는 일

temperatureSensor = sensormanager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE) 
if (temperatureSensor != null) { 
    /* register listener and do other magic... */ 
} 

은 시스템의 다른 서미스터를 찾아 그 값이 노출 sysfs를 경로를 읽는 것입니다 예를 들어, 배터리 또는 압력 센서의 서미스터 (이 전화기에 서미스터가있는 경우).

이러한 접근 방식의 단점은 원시 서미스터 값이라는 것입니다. 때때로 서미스터의 값으로 변환하는 방법을 알고 있어야하며, 악화되는 경우 (API의 온도와 같이) 보상되지 않습니다. 전화가 일부 계산을 실행하고 프로세서가 전화를 가열하면 그 값은 주변 온도보다 쉽게 ​​10 degreess 높을 수 있으므로 실제로 유용하지는 않습니다.