Sensor驱动:Location API 取不到GPS经纬度等数据或不识别传感器

 

---------------------------------------华丽的分割线-----------------------------------------

 

 

 

sensor驱动: 客户端要使用location api取gps的经纬度值,但总取不到。
在调试了几天后(--!)发现有个容易被忽略的常量:
SENSOR_DATA_TYPE_ERROR_RADIUS_METERS
 
 关于其说明的地方已经清楚地指出:
 1. Accuracy of latitude and longitude values, in meters. A value of zero means that the accuracy level is not known. The Location API gives priority to sensors that provide a non-zero value for this field.
 2. Do not report a value for SENSOR_DATA_TYPE_ERROR_RADIUS_METERS that is zero or less.
 3. Report a valid value for SENSOR_DATA_TYPE_ERROR_RADIUS_METERS before raising events or changing the value for SENSOR_PROPERTY_STATE to SENSOR_STATE_READY.

也就是说不能为零,否则它是不会向api提供数据的。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Java Sensor API加速度传感器数据的示例代码: ``` import javax.microedition.sensor.*; import javax.microedition.midlet.*; public class SensorMIDlet extends MIDlet implements SensorListener { private SensorManager sensorMgr; private String accelSensorUrl; protected void startApp() throws MIDletStateChangeException { // 获传感器管理器实例 sensorMgr = SensorManager.getInstance(); // 获加速度传感器的URL SensorInfo[] sensorInfos = sensorMgr.findSensors(null, null); for (int i = 0; i < sensorInfos.length; i++) { String technology = sensorInfos[i].getTechnology(); if (technology.equals(SensorInfo.TECH_ACCELEROMETER)) { accelSensorUrl = sensorInfos[i].getUrl(); break; } } if (accelSensorUrl != null) { try { // 打开传感器并注册监听器 SensorConnection sensorConn = (SensorConnection) Connector.open(accelSensorUrl); SensorInfo sensorInfo = sensorConn.getSensorInfo(); System.out.println("Sensor: " + sensorInfo.getName()); SensorChannel sensorChannel = sensorConn.openChannel(); sensorChannel.setNominalRate(10000); sensorChannel.setDataType(SensorConstants.DATA_TYPE_DOUBLE); sensorChannel.setBufferSize(1); sensorChannel.setDataListener(this, 1); } catch (IOException e) { System.out.println("Exception opening sensor: " + e.getMessage()); } catch (SensorException e) { System.out.println("Exception configuring sensor: " + e.getMessage()); } } else { System.out.println("No accelerometer sensor available."); } } protected void pauseApp() { sensorMgr.quit(); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { sensorMgr.quit(); } public void sensorDataReceived(SensorConnection sensor, Data[] data, boolean isDataLost) { if (!isDataLost) { Double[] values = (Double[]) data[0].getValues(); double x = values[0].doubleValue(); double y = values[1].doubleValue(); double z = values[2].doubleValue(); // 处理传感器数据 // ... System.out.println("Accelerometer data: x=" + x + ", y=" + y + ", z=" + z); } } public void stop() throws MIDletStateChangeException { pauseApp(); destroyApp(true); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值