我们有自己控制的内部平板电脑,我们要求它们记录的位置尽可能准确。我尽我所能打开真正的GNSS GPS,但getLastKnownLocation(“GPS”)
总是返回null
。
我们使用的是三星Galaxy Tab A7,SM-T500,其规格保证它有一个真正的GPS GNSS无线电接收器。谷歌地图正确识别了我的秘密巢穴。
我们的Androidanifest.xml请求GPS权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<activity
android:name=".MainActivity"
android:foregroundServiceType="location"
...
>
在平板电脑的设置中,我们的应用程序具有“仅在应用程序使用时”的位置权限,这很好,因为我们的应用程序主导着我们的平板电脑并且是交互式的。我们的平板电脑不用于车辆,因此位置只需在过去10分钟左右内准确即可。
locationManager。isProviderEnabled(LocationManager.GPS_PROVIDER)
返回true
,与被动_PROVIDER
和网络_PROVIDER
的调用一样。“融合”提供程序不可用。
然后我们称之为,提取各种位置并返回最准确的位置:
private static Location getLastKnownLocation(@NonNull LocationManager locationManager) {
List<String> providers = locationManager.getProviders(true);
Location bestLocation = null;
for (String provider : providers) {
Location l = locationManager.getLastKnownLocation(provider);
if (l == null)
continue;
if (bestLocation == null || l.getAccuracy() < bestLocation.getAccuracy())
bestLocation = l; // Found best last known location: %s", l);
}
return bestLocation;
}
我们得到的只是“被动的”。全球定位系统位置是否特别需要通过locationManager.requestLocationUpdate()
往返,或者getLastNotnloction()
足够好?
其他地方也有类似的答案,但这条线索值得结束。似乎getLastKnownLocation()
不适用于GPS和GNSS卫星,因此Phantom Lord提示正确的解决方案是启用我的GPS主要活动:
public class MainActivity扩展AppCompatActivity实现LocationListener{
然后在onCreate()
中打开侦听器:
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (locationManager != null) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return; // TODO spank user
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 10, this);
}
然后捕捉更新:
private Location gpsLocation = null;
@Override
public void onLocationChanged(Location location) {
gpsLocation = location;
}
现在有一个新问题:为什么被动定位精度约为5米,而GPS定位精度约为14米?这是一个天真的平板电脑,所以它肯定不知道我的家庭地址等等。根据我的网络垃圾邮件,我的IP地址在附近的一个城市。。。
问题内容: 我们正在使用PHP ORM Doctrine。我正在创建这样的查询: 然后在函数中添加各种where子句和适当的东西,像这样 稍后,在为该查询对象添加对象之前,我想打印出原始SQL以便对其进行检查,并执行以下操作: 但是,这只会打印出准备好的语句,而不是完整的查询。我想查看它发送给MySQL的内容,但是它正在打印出一条准备好的语句,包括。有什么办法可以查看“完整”查询吗? 问题答案:
问题内容: 有没有一种方法可以使GPS一次访问,而不必使用不断检查位置更新的弯针? 在我的场景中,我感兴趣的只是查找当前坐标,而不是与GPS卫星的连续连接。有谁知道如何做到这一点?提前致谢。 问题答案: 首先检查最近知道的位置是否是最近的。如果没有,我相信您必须设置onLocationChanged侦听器,但是一旦获得第一个有效位置,就可以随时停止更新流。 加成
具有类型的HashMap 希望更新主地图内地图的所有键值对。是一个方法,它在添加值后返回。 我如何在上面的代码中也更新?将值增加1
切换到 JDK8 后,清单。MF Attributes 开始返回 https://bugs.openjdk.java.net/browse/JDK-8201636 这表明这是 Oracle 在 JDK 8u151-8u172 中引入的一个错误。 我使用pom.xml和IntelliJ IDEA。指定(标签 < br > < code > JAVA _ HOME 设置为JDK10 我安装了< cod
我正在尝试使用java(JDA)设置discord bot,但在服务器上使用它时遇到了一些问题。它适用于直接消息,但由于某些原因,它不能在服务器上使用。我通过intellij将该项目设置为Maven项目。 我是从一个 这在DM中运行良好,但在服务器中不起作用。 以下是我迄今为止所尝试的: 1. 我把它从收到的消息改为: 这在我的服务器上仍然不起作用,在dms中也不起作用。 2.我更改了bot的权限
问题内容: 我正在创建一个小型Java Jpanel游戏,其中应该有一个火箭,它通过箭头上下移动,并通过太空射击。 触发方法应按以下方式工作:按下空格键,东西触发并在屏幕上移动,然后当它碰到某个x时,它就会消失。此外,您只能发射一次,直到另一颗子弹消失为止。 我不知道我在做什么错。首先,在我的代码启动后,您会看到子弹在屏幕上飞舞。 2,子弹没有消失。 第三,即使其他子弹仍然可见,它也允许我再次开火