2

我正在开发一个 Android 应用程序。一旦启动,我将创建一个扩展 IntentService 并实现 SensorEventListener 的后台服务。该类负责监听位置更新和传感器更新,例如来自加速度计的更新。

然后我创建主窗口并检查例如是否启用了 GPS 以及其他一些东西。如果一切正确,我从主 Activity 开始另一个。我这样创建它:

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

现在我想在 DrActivity 中显示坐标和加速度计值。

获得活动中显示的这些值的最佳方法是什么?我可以想到这两个:

1) 不知何故,在应用程序中有一个活动处理程序,并从每个传感器上的传感服务类或位置更新使用应用程序处理程序(可能是静态的?)并更改 TextView(s) 的值

2)在应用程序中拥有坐标和传感器的公共静态值,然后从 Activity 中使用它们(这里的问题是如何让 Activity 知道有更新。

3)有什么更好的吗?

我不能使用 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 回答