- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用 requestLocationUpdates()
进行一些测试来自 FusedLocationApi
的函数.我正在使用 PRIORITY_BALANCED_POWER_ACCURACY .城市街区的精度对我来说很好。
当我请求 ACCESS_FINE_LOCATION许可,我得到了大约 100m 的精度,这对 GPS
来说非常有用离开。因为我不需要 GPS 精度,但需要城市街区精度,我只想请求 ACCESS_COARSE_LOCATION
允许。但是,当我请求 ACCESS_COARSE_LOCATION
许可,我得到了 2 公里的精度。设备似乎不再使用 Wifi
许可,只有一个手机信号塔精度。
如何使用 ACCESS_COARSE_LOCATION 获得更好的精度?允许?
注:GPS
在我的测试设备上被禁用。
最佳答案
这是一个有趣的问题,我的印象是使用 ACCESS_COARSE_LOCATION
将使用 WiFi,因为这就是文档所说的。ACCESS_COARSE_LOCATION
的文档状态:
Allows an app to access approximate location derived from network location sources such as cell towers and Wi-Fi.
public class MainActivity extends Activity implements
GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {
LocationRequest mLocationRequest;
GoogleApiClient mGoogleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buildGoogleApiClient();
mGoogleApiClient.connect();
}
@Override
protected void onPause(){
super.onPause();
if (mGoogleApiClient != null) {
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}
}
protected synchronized void buildGoogleApiClient() {
Toast.makeText(this,"buildGoogleApiClient",Toast.LENGTH_SHORT).show();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
@Override
public void onConnected(Bundle bundle) {
Toast.makeText(this,"onConnected",Toast.LENGTH_SHORT).show();
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10);
mLocationRequest.setFastestInterval(10);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
//mLocationRequest.setPriority(LocationRequest.PRIORITY_LOW_POWER);
//mLocationRequest.setSmallestDisplacement(0.1F);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
@Override
public void onConnectionSuspended(int i) {
Toast.makeText(this,"onConnectionSuspended",Toast.LENGTH_SHORT).show();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Toast.makeText(this,"onConnectionFailed",Toast.LENGTH_SHORT).show();
}
@Override
public void onLocationChanged(Location location) {
Log.d("locationtesting", "accuracy: " + location.getAccuracy() + " lat: " + location.getLatitude() + " lon: " + location.getLongitude());
Toast.makeText(this,"Location Changed",Toast.LENGTH_SHORT).show();
}
}
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
compile 'com.google.android.gms:play-services:7.3.0'
PRIORITY_BALANCED_POWER_ACCURACY
,并且没有 WiFi。请注意,我还禁用了
Always Allow Scanning
,因为它指出:
Let Google Location Service and other applications scan for Wi-Fi networks, even when Wi-Fi is off
PRIORITY_BALANCED_POWER_ACCURACY
的结果,
ACCESS_COARSE_LOCATION
,并且没有 WiFi:
accuracy: 2000.0 lat: 37.78378378378378 lon: -122.40320943772021
accuracy: 2000.0 lat: 37.78378378378378 lon: -122.40320943772021
LocationRequest.PRIORITY_LOW_POWER
在
LocationRequest
同时保持
android.permission.ACCESS_COARSE_LOCATION
在 AndroidManifest.xml 中。
accuracy: 2000.0 lat: 37.78378378378378 lon: -122.40320943772021
accuracy: 2000.0 lat: 37.78378378378378 lon: -122.40320943772021
PRIORITY_LOW_POWER
与使用
PRIORITY_BALANCED_POWER_ACCURACY
的结果相同,因为 WiFi 状态似乎对坐标的准确性没有任何影响。
LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY
,并将 AndroidManifest.xml 切换为
ACCESS_FINE_LOCATION
:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
accuracy: 826.0 lat: 37.7825458 lon: -122.3948752
accuracy: 18.847 lat: 37.779679 lon: -122.3930918
LocationRequest
中使用的内容似乎无关紧要。在 Java 代码中,以及更多您在 AndroidManifest.xml 中使用的权限,因为这里的结果清楚地表明使用
ACCESS_FINE_LOCATION
时,打开或关闭 WiFi radio 对准确性有很大影响,而且总体上也更准确。
android.permission.ACCESS_COARSE_LOCATION
时,当您的应用程序是唯一发出位置请求的应用程序时,打开或关闭 WiFi radio 并没有什么不同。
PRIORITY_BALANCED_POWER_ACCURACY
会让您的应用“搭载”其他应用发出的位置请求。
They will only be assigned power blame for the interval set by setInterval(long), but can still receive locations triggered by other applications at a rate up to setFastestInterval(long).
ACCESS_COARSE_LOCATION
时会发生什么.
ACCESS_COARSE_LOCATION
,
PRIORITY_BALANCED_POWER_ACCURACY
,并开启 WiFi:
accuracy: 2000.0 lat: 37.78378378378378 lon: -122.38041129850662
accuracy: 2000.0 lat: 37.78378378378378 lon: -122.38041129850662
ACCESS_COARSE_LOCATION
还禁用应用程序“搭载”到其他应用程序获得的位置的能力。
ACCESS_COARSE_LOCATION
AndroidManifest.xml 在获取精确位置数据方面确实削弱了应用程序。
关于android - ACCESS_COARSE_LOCATION 权限可在 Android 上提供手机信号塔精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30191047/
关于这个话题已经说了很多,但是我找不到我的问题的确切答案。 JavaScript 无法准确表示 0.1 等小数,这是可以理解的。 例如,由于乘法运算期间发生舍入误差,这是正确的: 0.1 * 3 ==
在 zig 中,可以使用“{d}”以十进制表示法打印浮点值。这将自动以全精度打印该值。有没有办法指定位数?是针对每个值,还是作为某种全局设置? 最佳答案 这将限制小数点后的位数,四舍五入和零填充: f
我正在进行的项目需要高精度。减法时我遇到的问题在这里说明: >> 1-0.9999999999999999 ans = 1.1102e-16 >> 1-0.99999999999999999 ans
是否可以使变量本身的精度成为将在运行时定义的变量? 说,如果我尝试编译: SUBROUTINE FOO( VARIABLE, PRECISION_VALUE ) IMPLICI
我正在查询 SQLite 数据库以获取纬度/经度详细信息。 SELECT * FROM tblMain where latitude > -33.866 and latitude 151.20
我一直使用下划线将整数定义为 Fortran 中的特定类型。 下面是一段代码,用于演示 1_8 的含义,例如: program main implicit none integer(2)
我正在寻找一种方法来告诉 pint 要打印多少个有效数字。例如,当我输入以下内容时: import pint ureg = pint.UnitRegistry() print(3*ureg.m /9)
我正在从事一个项目,目标是从山上追踪动物。在第一个实地考察季中,我们使用了 OpenTags 和经过校准的摄像头,虽然可以正常工作,但需要大量的处理/校准,而且至关重要的是,当系统出现问题时无法提供任
在 JavaScript 中有没有一种方法可以确定一个数除以另一个数是否会得到整数?就像 18.4/0.002 给我们 9200,但是 18.4/0.1 给我们 183.99999999999997。
我正在尝试使用 Big.js 在 javascript 中完成此计算 r = (a * b)/ sqrt( ( a*sin(θ) )^2 + ( b*cos(θ) )^2 ) 我也试过 math.js
我有这个片段着色器代码,它在 iOS 模拟器(非视网膜)和 iPad2(非视网膜)之间显示不同: highp vec2 textCoord; textCoord.x = gl_Fr
这个问题在这里已经有了答案: C++ calculating more precise than double or long double (2 个答案) 关闭 6 年前。 是否有任何浮点类型在小
我似乎一直困惑的三个问题: 为什么代码是 x & ~077比这行代码 x & 0177700 更好。是因为精度损失较小吗? 为什么此代码对于设置数字中的第 5 位不正确? num = num + 0x
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Precision of Floating Point 我正在尝试使用一些 float 来计算概率,但我的最
由于微 Controller 的精度,我定义了一个包含两个 float 比率的符号,而不是直接写结果。 #define INTERVAL (0.01F/0.499F) 代替 #defi
我试图比较这 3 种搜索算法,起初我使用 time.h 库但没有任何反应,输出始终是 0.00000 秒。现在我试图在循环中使用一些计数器。但我在这里也有问题, 任何人都可以帮我处理代码吗? 这是我的
char buf[10]; int counter, x = 0; snprintf (buf, sizeof buf , "%.100d%n", x, &counter); printf("Coun
我注意到在评估向量时对我来说是不可预测的行为。直接执行它与在循环中进行索引似乎是完全不同的。谁能帮我解决这个问题?我知道可能在它如何进行每个操作中都有解释,所以我需要一些关于如何查找它的键 多谢指教提
我想在我的应用程序中使用精确的 gps 定位。所以我遵循了一个简单的教程(LocationManager 的基本用法,明确要求 GPS 提供商,要求更新 0 ms,0 m)并创建了一个应用程序。我对更
float 在 1.0f 和 0.0f 之间有多少位精度,这样每个值都可以唯一表示? 例如,如果第一个小数 float 不能表示 0.13f,答案就是 float 只有一位精度。 最佳答案 std::
我是一名优秀的程序员,十分优秀!