获取android的设备定位数据的问题

时间:2012-02-07 05:45:29

标签: android orientation android-sensors device-orientation

我是论坛和android开发的新手。

我一直在尝试获取设备方向数据,但似乎做错了什么。我一直在关注此链接的教程:http://www.mail-archive.com/android-beginners@googlegroups.com/msg23415.html

然而,行

sensorManager =  (SensorManager) getSystemService(SENSOR_SERVICE);

给我一​​个错误,SENSOR_SERVICE不是一个有效的变量,所以我发现它是Context类的公共静态变量,所以我使用

sensorManager =  (SensorManager) getSystemService(Context.SENSOR_SERVICE);

这给了我一个错误,即getSystemService(String)不是我当前类的方法。我现在明白getSystemService(String)是Context的一个方法,所以我的问题是

1)什么是 - 我认为它是一个演员 - (SensorManager)在方法调用前做?

2)我是否必须获取当前上下文并运行该方法?如果是这样的话?

我确信我正在过度思考,但我们非常感谢任何帮助和耐心。

2 个答案:

答案 0 :(得分:0)

是的,getSystemService()是Context的一个方法,要获取Context,要么使用

getApplicationContext();

或者,使用您当前的活动或服务,通过以下对象获取上下文:

ThisService.this.getSystemService();

ThisActivity.this.getSystemService();

答案 1 :(得分:0)

  

1)什么是 - 我认为它是一个演员 - (SensorManager)在方法调用之前做什么?

这确实是演员。这是必要的,因为getSystemService被声明为返回一个无差别的Object类型(即使它显然返回更具体的东西)。

  

2)我是否必须获取当前上下文并运行该方法?如果是这样的话?

在自定义View课程中,您可以使用getContext()。如果此代码是另一种自定义类的一部分,则可以在构造函数中传递上下文。我建议在将上下文保存为成员字段时使用getApplicationContext(),因为如果活动从设备的方向更改中消失,Activity上下文应该可以自由地进行垃圾收集。