getSystemService无法获取传感器服务,是怎么回事呢?

z00171071 2012-03-13 09:59:32
多数例子获取传感器管理器是这样做的:

//创建一个SensorManager来获取系统的传感器服务
sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

//选取加速度感应器
int sensorType = Sensor.TYPE_ACCELEROMETER;

//注册监听
sm.registerListener(myAccelerometerListener,sm.getDefaultSensor(sensorType),SensorManager.SENSOR_DELAY_NORMAL);

可是我用这种方法进行测试,不管是虚拟的还是在我手机上实测,都是失败的,出现异常。貌似死在了getSystemService函数中,看了一下这个函数的javadoc,列出了所有目前可以获取的系统服务,奇怪的是,并不包括SENSOR_SERVICE,如果不能获取传感器服务的话,传感器怎么工作啊?
...全文
495 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
z00171071 2012-03-13
  • 打赏
  • 举报
回复

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Log.i(TAG,"begin");
sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
if(sm == null){
Log.i(TAG,"sm is null");
return;
}else{
Log.i(TAG,"sm is ok");
}

if(sm.registerListener(myAccelerometerListener,
sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL)){
Log.i(TAG,"sm register success");
}else{
Log.i(TAG,"sm register failed");
return;
}
}



同一段代码,在2.2和4.0.3上都测试了一遍,结果是:
2.2上, 只打印了begin,然后就什么都没有了;
4.0.3上,一切正常。

可以看出,2.2上的代码在调用getSystemService时,无法返回。

楼上的大侠给指点一下,小弟刚刚接触没几天,刚才搜了一下百度了一下权限,还是一头雾水,谢谢了
胡凯me 2012-03-13
  • 打赏
  • 举报
回复
请问你看了log吗?为什么不尝试看下原因是什么呢?不会又是一个忘记在manifest文件添加权限的吧
z00171071 2012-03-13
  • 打赏
  • 举报
回复
官方文档我看过,思路和这个一致,就是通过getSystemService获取传感器管理器,可是我在这一步就得到一个null,在我2.2的手机上测试的,难道是我手机有问题了?可是通过工程命名检测各种传感器都是好使的啊
儿大不由爷 2012-03-13
  • 打赏
  • 举报
回复
你看的是哪里的文档?官方文档上有的

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧