1

我是论坛和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 的一种方法,所以我的问题是

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

2)我是否必须获取当前上下文并在其上运行该方法?如果是这样怎么办?

我确定我想太多了,但非常感谢任何帮助和耐心。

4

2 回答 2

0

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

getApplicationContext();

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

ThisService.this.getSystemService();

或者

ThisActivity.this.getSystemService();
于 2012-02-07T05:54:47.333 回答
0

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

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

2)我是否必须获取当前上下文并在其上运行该方法?如果是这样怎么办?

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

于 2012-02-07T05:55:34.203 回答