2

私はAndroidでアプリケーションを開発しています。起動したら、IntentServiceを拡張してSensorEventListenerを実装するバックグラウンドサービスを作成します。そのクラスは、加速度計から来るもののような位置の更新とセンサーの更新を聞く責任があります。

次に、メインウィンドウを作成すると、たとえばGPSが有効になっているかどうかなどがチェックされます。すべてが正しければ、メインのアクティビティから別のアクティビティを開始します。私はそれを次のように作成します:

Intent startDrIntent = new Intent(MainActivity.this, DrActivity.class);
MainActivity.this.startActivity(startDrIntent);

次に、DrActivityで座標と加速度計の値を表示したいと思います。

アクティビティに表示されるこれらの値を取得するための最良のアプローチは何ですか?私はこの2つを考えることができます:

1)どういうわけか、アプリケーション内のアクティビティのハンドラーを持ち、各センサーのセンシングサービスクラスから、または場所の更新でアプリハンドラーを使用し(静的かもしれませんか?)、TextViewの値を変更します

2)アプリケーションでは、座標とセンサーの静的な値を公開し、それをアクティビティから使用します(ここでの問題は、更新があったことをアクティビティに通知する方法です。

3)何か良いことはありますか?

バックグラウンドサービスは1つだけでなく複数のアクティビティによって消費されるため、AsyncTaskを使用できません。前もって感謝します!ギレルモ。

4

1 に答える 1

0

DrActivity に SensorEventListener も実装させないのはなぜですか?

public class DrActivity implements SensorEventListener
{
    private SensorManager mSensorManager;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    public void onAccuracyChanged(Sensor arg0, int arg1) {
    // TODO Auto-generated method stub

   }

   @Override
   public void onSensorChanged(SensorEvent arg0) 
    {
        // TODO Auto-generated method stub
        if(arg0.sensor.getType()==Sensor.TYPE_LIGHT)
        {
             textLightSensorData.setText("Light Sensor Date:"
           + String.valueOf(arg0.values[0]));
        }
    }
}

于 2012-12-12T00:11:39.273 に答える