2011-06-22 27 views
6

ボタンセンサーで光センサー(明示的には)の現在の値を取得する方法を探しています。ここで私は、私はまた、どのように私は、現在のルクス値の間になるだろう光センサーの値を取得する

<Button android:layout_width="122px" android:id="@+id/widget35" android:text="Start" android:layout_height="wrap_content" android:layout_x="112dp" android:layout_y="249dp" android:onClick="onButtonDown"></Button> 

機能を呼び出すためのボタンを作り、このコードを持っている光センサの制御に

public class SensorActivity extends Activity implements SensorEventListener 
{ 
private final SensorManager mSensorManager; 
private final Sensor mLight; 
int minLux = 0; 
int currentLux = 0; 
int maxLux; 

public SensorActivity() 
{ 
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
    mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); 
} 

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

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

public void onAccuracyChanged(Sensor sensor, int accuracy) 
{ 
    if(sensor.getType() == Sensor.TYPE_LIGHT) 
    { 

    } 
} 

public void onSensorChanged(SensorEvent event) 
{ 
    if(event.sensor.getType() == Sensor.TYPE_LIGHT) 
    { 

    } 
} 
} 

を実装するために使用しているコードがありますアプリはバックグラウンドで実行されています。ボタンを押して現在のlux値を取得して保存するにはどうすればint maxLux;になりますか?

答えて

8

hereのように、現在のセンサー値を直接取得することはできません。また、最近のバージョンのAndroidでは、リスナーが登録されるとすぐにonSensorChangedイベントが生成されます(ベースラインを取得できるようになります)。以前のバージョンではそうではありません。あなたが実際に行うことができる唯一のことは、ユーザーがAndroidの最新バージョンを実行しているか、値が変更されていることを願うことです。onSensorChanged(例)内のevent.values [0]から現在のlux値を取得します:

public void onSensorChanged(SensorEvent event) 
{ 
    if(event.sensor.getType() == Sensor.TYPE_LIGHT) 
    { 
     currentLux = event.values[0]; 
     if (currentLux > maxLux) 
      maxLux = currentLux; 
    } 
} 

(maxLuxとcurrentLuxをfloatに変更した後)。これにより、ボタンが押されたときにcurrentLuxの値を調べることによって行うことができるボタンの押下に基づいて現在の値を取り出す問題が残されます。

+0

ありがとうございました!私はそれが変わるときだけ一定の値を必要としません。私はあなたのコードをいくつか調整しました。 'maxLux'は元のキャリブレーションに基づいて定数になります(ボタンの押さえ方)、' maxLux'からの 'currentLux'のパーセンテージに基づいて画面の明るさが変化します – Cistoran

関連する問題