- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 LocationManager
查找我的设备的位置; onLocationChanged()
方法无论我尝试什么都不会被调用(尝试使用模拟位置应用程序更改位置,尝试关闭并在手机上尝试运行该应用程序等)。这是我的代码和 logcat:
LocationManager mlocationManager;
LocationListener mlocationListener;
long MIN_TIME = 5000;
float MIN_DISTANCE = 1000;
final int COARSE_LOCATION_REQUEST_CODE=102;
String LOCATION_PROVIDER = LocationManager.NETWORK_PROVIDER;
@Override
protected void onResume() {
super.onResume();
Log.d("ClimateControl", "onResume was called");
getWeatherForCurrentLocation();
}
private void getWeatherForCurrentLocation() {
mlocationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
mlocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.d("ClimateControl", "onLocationChanged() has been called");
String longitude = String.valueOf(location.getLongitude());
String latitude = String.valueOf(location.getLatitude());
Log.d("ClimateControl", "Latitude: " + latitude + "Longitude: " + longitude);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("ClimateControl", "onStatusChanged() has been called");
}
@Override
public void onProviderEnabled(String provider) {
Log.d("ClimateControl", "onProviderEnabled() has been called");
}
@Override
public void onProviderDisabled(String provider) {
Log.d("ClimateControl", "onProviderDisabled() has been called");
}
};
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},COARSE_LOCATION_REQUEST_CODE);
}
mlocationManager.requestLocationUpdates(LOCATION_PROVIDER,MIN_TIME,MIN_DISTANCE,mlocationListener);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == COARSE_LOCATION_REQUEST_CODE){
if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
Log.d("ClimateControl","Request granted");
getWeatherForCurrentLocation();
}
else{
Log.d("ClimateControl","Request denied");
}
}
}
08-06 22:09:42.949 29359-29359/com.example.praty.climatecontrol D/ClimateControl: onResume was called
旁注:我确实尝试添加另一个 requestLocationUpdates()
实现,并将字符串提供程序作为 LocationManager.GPS_PROVIDER
但出现 fatal error 导致我的应用程序崩溃
PS:我完整的调试logcat:
08-07 16:59:35.229 9417-9417/? I/art: Late-enabling -Xcheck:jni
08-07 16:59:35.388 9417-9417/? W/System: ClassLoader referenced unknown path: /data/app/com.example.praty.climatecontrol-1/lib/arm64
08-07 16:59:35.449 9417-9417/com.example.praty.climatecontrol W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
08-07 16:59:35.812 9417-9417/com.example.praty.climatecontrol D/ClimateControl: onResume was called
08-07 16:59:35.861 9417-9486/com.example.praty.climatecontrol I/Adreno: QUALCOMM build : bc01238, I8e5c908169
Build Date : 12/06/16
OpenGL ES Shader Compiler Version: XE031.09.00.03
Local Branch :
Remote Branch : quic/LA.BR.1.3.6_rb1.10
Remote Branch : NONE
Reconstruct Branch : NOTHING
08-07 16:59:35.900 9417-9486/com.example.praty.climatecontrol I/OpenGLRenderer: Initialized EGL, version 1.4
08-07 16:59:35.900 9417-9486/com.example.praty.climatecontrol D/OpenGLRenderer: Swap behavior 1
08-07 16:59:36.581 9417-9417/com.example.praty.climatecontrol E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
08-07 16:59:38.171 9417-9417/com.example.praty.climatecontrol D/ClimateControl: onResume was called
最佳答案
为什么onLocationChanged
的原因没有被调用,因为你没有声明权限 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
.
尝试在 list 文件中添加缺少的权限,然后重新测试。它应该工作正常。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
关于java - onLocationChanged() 方法未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51712224/
当程序在前台运行时,它工作正常。只有当某些其他应用程序在前台运行并且我的程序在后台运行时,onlocationchanged 才会停止调用。 这不会立即发生,但在将应用程序切换到后台后仍会相对较快。说
我正在尝试制作一个需要使用GPS的应用程序。所以我写了一个启动服务的MainActivity。该服务使用融合位置提供程序获取位置。所以我的观点是定期获取位置,我使用requestedLocationU
如果我理解正确,在这段代码中,我的代码 onLocationChanged 方法应该每 1m 或 0.4sec 自动调用一次,因为我设置了 locationManager.requestLocatio
在 LocationChanged 监听器上不起作用。 import android.app.Activity; import android.content.Context; import andr
现在我正在使用基于位置的应用程序,但我的问题是位置未在真实设备上更新。那是 onLocationChanged 在真实设备上不工作。但在模拟器上没问题。 locmngr=(LocationMa
我使用的是精确的代码形式 developer.android.com/但它似乎不是 100% 有效,我昨天使用相同的代码并且有效。我拥有所需的所有权限。 我已经添加了 ACCESS_COARSE_
OnLocationChanged 多次触发并导致堆栈溢出。 这里是导入: import com.google.android.gms.common.ConnectionResult; import
我正在使用 FusedLocationApi 获取更新。但是尽管将 LocationRequest.setInterval 设置为 500 甚至 200 毫秒,但我每秒只能获得一次更新。如果可能的话,
我正在编写一个基于位置的 Android 应用程序,我在其中应用位置监听器来捕获 GPS 坐标、速度和覆盖距离。问题是我的“onLocationChanged”回调函数在每个时间间隔被调用两次,导致将
我已经实现了应该返回当前位置的代码。 首先是代码: public static double[] getLocation(Context context) { double[] res
我正在创建一个应用程序,它通过网络广播用户的位置,为此我创建了一个服务,我在其中使用 LocationListener 并从中获取更新onLocationChanged 我已经设置了requestLo
尝试在 requestLocationUpdate 指定的时间内获取位置。但是 OnLocationChanged 事件在不同的设备上以不同的时间间隔调用 初始化位置管理器 private
我正在尝试将标记添加到我设备的当前位置。无论我尝试什么,onLocationChanged 方法都会在我启动应用程序时触发一次。 public class MapsActivity extends F
我写了以下服务,想法是在应用程序启动时将用户位置发送到服务器,当用户移动超过 500m 时,问题是在启动时调用 onLocationChanged 3 次。 我无法理解它从哪里调用它 3 次。请指导我
OnLocationChanged() 未被调用,但添加了 requestLocationUpdates,因此 map 未显示其当前位置。 map 始终显示其默认的模拟位置。请建议克服这个问题。我已经
我正在尝试使用 LocationManager 查找我的设备的位置; onLocationChanged() 方法无论我尝试什么都不会被调用(尝试使用模拟位置应用程序更改位置,尝试关闭并在手机上尝试运
我有一个同时使用网络和 gps 作为提供者的跟踪设备。 但是,有时提供商会向我发送一个偏离标记的位置。我该如何解决这个问题? // The minimum distance to change
我一直在尝试创建一个与 map 相关的 android 应用程序,但我意识到我的应用程序的 onLocationChanged 尚未被调用,因此 map 始终停留在默认区域(美国)。 我的代码: pu
我已经为我的 LocationManager 注册了位置更新,每 10 秒 mgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1
我对 Android 中的 onLocationChanged 事件有疑问。这是触发: case R.id.start: { Points.add(overlay.getMyLocation(
我是一名优秀的程序员,十分优秀!