2

プログラムを書いていて、光センサーの値と現在のバッテリーレベルを取得できますが、光の値だけが変化し、バッテリーレベルが変化したときだけです。これら2つの値をいつでも取得する方法はありますか? ユーザーが私のプログラムを実行するときのように、現在の値が変更されるのを待つのではなく、すぐに取得したいと考えています。

4

2 に答える 2

2

値が変更されたときに値を受け取るコードがある場合は、値を変数に格納し、変更のたびに setter メソッドで変数を更新することができます。次に、いつでも現在の値が必要なときはいつでも、getter メソッドを使用して変数を呼び出すだけです。

したがって、メソッドが次のようになっている場合

private void monitorBatteryState() {
    BroadcastReceiver battReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {

            context.unregisterReceiver(this);
            int rawlevel = intent.getIntExtra("level", -1);
            int scale = intent.getIntExtra("scale", -1);
            int status = intent.getIntExtra("status", -1);
            int health = intent.getIntExtra("health", -1);
            int level = -1;  // percentage, or -1 for unknown
            if (rawlevel >= 0 && scale > 0) {
                level = (rawlevel * 100) / scale;
            }
            setBatteryLevel(rawlevel);  // setter method.
            } 
    }

public void setBatteryLevel(rawlevel) {
  batteryLevel = rawlevel;
}

public int getBatteryLevel() {
  return rawlevel;
}

getter メソッドを使用して現在のバッテリー レベルを返すrawlevelことができます。また、光センサーの値についても同じことができます。

于 2010-02-15T03:31:26.827 に答える
0

これを mainActivity に入れます。これは、他の誰かがバッテリー レベルについて投稿しているのを見たからです。

SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
Sensor mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
//don't know if you can put lightSensorValue here, if not try adding it as a member field
final int lightSensorValue;

mSensorManager.registerListener(new SensorEventListener()
{
    public void onAccuracyChanged(Sensor sensor, int accuracy) 
    {
        //do something when accuracy is changed, you probably don't need this
    }

    public void onSensorChanged(SensorEvent event)
    {
        lightSensorValue = event.values[0];
    }

}, mLight, SensorManager.SENSOR_DELAY_NORMAL);

編集:あなたの質問をもう一度読んで、いつでも手動で取得したいことがわかりました。この値は、値が変更されるたびに更新されるため、常に最新の情報を取得できます。

遅延を に変更して設定を試すSensorManager.SENSOR_DELAY_FASTESTと、リフレッシュ レートが大幅に速くなります。

于 2013-10-15T21:39:56.117 に答える