我最近偶然发现了这条消息,我很确定这个构造函数在 18.0.0 之前的版本中没有被弃用,但我也找不到任何地方也找不到这个构造函数已被弃用的信息。
我们应该使用什么来代替,有没有另一种方法来创建一个locationRequest
?
android kotlin google-maps-android-api-2 google-location-services
我正在使用FusedLocationProviderClient进行位置请求.我保留了一个计时器30秒,以检查在该时间范围内是否收到位置.代码如下:
public void requestLocationUpdates() {
initializeLocationRequest();
mFusedLocationProviderClient.requestLocationUpdates(mLocationRequest, mLocationCallback, null);
startTimer();
}
private void initializeLocationRequest() {
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(mContext);
mLocationRequest = new LocationRequest();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(5000);
mLocationRequest.setFastestInterval(5000);
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
synchronized (SilentCurrentLocationProvider.this) {
super.onLocationResult(locationResult);
Location location = locationResult.getLastLocation();
}
};
}
private void startTimer() {
if (mTimeout < 1) {
mTimeout = mDefaultTimeout;
}
mTimer = new Timer();
mTimer.schedule(new LocationTimer(), mTimeout * 1000);
}
Run Code Online (Sandbox Code Playgroud)
在少数设备上,位置不会到来.在进一步调试时,我发现正在创建LocationRequest和LocationCallback,但它没有进入onLocationResult()方法.
由于这是实时产品的一部分,因此很难在每台设备上进行调试.即使我尝试重新启动手机,但它无法正常工作.用户尝试了其他应用程序,如Ola和位置即将到来. …
android google-location-services fusedlocationproviderclient
我在Google地图上绘制一条折线,取决于半径(1 - 100米).一旦绘制了心脏,用户需要在心脏边界上行走并且需要从头到尾完成(从底部开始然后向左然后向右然后再向下开始).
我能画出心脏,我得到了360分(latlng).这是我的代码,它将绘制心脏和图像.
private void initPath() {
path = new PolylineOptions();
path.color(ContextCompat.getColor(mActivity,R.color.heart_green));
path.width(25);
// offset to bottom
double offsetY = getY(Math.toRadians(180));
for (int angle = 0; angle <= 360; angle++) {
double t = Math.toRadians(angle);
double x = getX(t);
double y = getY(t) - offsetY;
//Log.d(TAG, "angle = " + angle + "(x = " + x + ",y= " + y + ")");
//convert x,y to lat lng
LatLng latLng = getLatLng(x, y, center);
path.add(latLng);
heart360Points.add(latLng);
}
} …
Run Code Online (Sandbox Code Playgroud) gps android google-maps-android-api-2 google-location-services
我一直在看着和玩FusedLocationProviderApi
.该类包含以下两种方法:
PendingResult<Status> requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationCallback callback, Looper looper)
PendingResult<Status> requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationListener listener, Looper looper)
Run Code Online (Sandbox Code Playgroud)
它们具有非常相似的签名和描述,唯一的区别在于使用LocationCallback
和使用其他用途LocationListener
.
抽象类LocationCallback
定义了两种方法:
void onLocationAvailability(LocationAvailability locationAvailability)
void onLocationResult(LocationResult result)
Run Code Online (Sandbox Code Playgroud)
并且接口LocationListener
只定义了一个方法
abstract void onLocationChanged(Location location)
Run Code Online (Sandbox Code Playgroud)
无视其他方法LocationCallback
,这两者之间有什么区别?是否有一些概念差异或特殊用例使一个优先于另一个?复制功能的理由是什么?
我的 LocationRequest 设置为 PRIORITY_HIGH_ACCURACY。但是在小米红米 Note 5 设备中,如果我在位置设置对话框中按下确定按钮,它总是通过 onActivityResult() 方法返回 0,并且我得到“com.google.android.gms.common.api.ResolvableApiException: 6: RESOLUTION_REQUIRED”。但我已经在其他一些设备上测试过它工作正常。我在片段内使用了启用/未启用 gps 检查。
/////Code that prompts up the dialog
SettingsClient client = LocationServices.getSettingsClient(getActivity ());
Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build());
task.addOnSuccessListener(getActivity (), new OnSuccessListener<LocationSettingsResponse>() {
@Override
public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
// All location settings are satisfied. The client can initialize
// location requests here.
// ...
}
});
task.addOnFailureListener(getActivity (), new OnFailureListener () {
@Override
public void onFailure(@NonNull Exception e) {
if (e instanceof ResolvableApiException) {
// Location settings are …
Run Code Online (Sandbox Code Playgroud) 我想使用最新的融合位置提供商客户端在"后台服务"上获取位置更新.我不想使用所有正在使用的位置监听器和Google API客户端.我还需要使用谷歌播放服务提供的位置设置Api来检查位置设置是否禁用或启用"后台服务".请帮助.
android android-location google-play-services fusedlocationproviderapi google-location-services
首先,我是一个Android新手。现在已经寻找解决方案已有一段时间了,但是到目前为止,在正确的方向上找不到任何有用的提示。这通常是由问题本身的性质引起的,这是相当利基的。
以下工作代码基于https://codelabs.developers.google.com/codelabs/realtime-asset-tracking上的代码实验室。
不过,我想知道,由于现在在多个资源中都提到它,因此您将如何基于Android的工作管理器而不是带有持续通知的服务来执行类似的操作?
public class TrackerService extends Service {
@Override
public void onCreate() {
super.onCreate();
requestLocationUpdates();
}
private void requestLocationUpdates() {
LocationRequest request = new LocationRequest();
request.setInterval(5 * 60 * 1000);
request.setFastestInterval(30 * 1000);
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
FusedLocationProviderClient client = LocationServices.getFusedLocationProviderClient(this);
int permission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
if (permission == PackageManager.PERMISSION_GRANTED) {
client.requestLocationUpdates(request, new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
Location location = locationResult.getLastLocation();
if (location != null) {
Log.d(TAG, "location update " + location);
}
}
}, null); …
Run Code Online (Sandbox Code Playgroud) android android-service android-fusedlocation google-location-services android-workmanager
如何使用颤振在 android 设备上获取当前位置。我已经尝试了Location和GeoLocator插件,GeoLocator 3.0.0 在调试时显示此错误:
Launching lib\main.dart on Android SDK built for x86 in debug mode...
Run Code Online (Sandbox Code Playgroud)
FAILURE:构建失败,出现异常。
Android 依赖项“android.arch.lifecycle:runtime”对于编译 (1.0.0) 和运行时 (1.1.0) 类路径具有不同的版本。您应该通过 DependencyResolution 手动设置相同的版本
位置 2.0.0也会在调试时引发错误。还有另一个名为geoLocation 的插件可用,但它与 dart 2.0 不兼容。在这种情况下,我如何获得位置(经度和纬度)[一次]?任何帮助将不胜感激。
android dart location-services flutter google-location-services
我正在使用 Flutter 的location
插件开发一个简单的应用程序,其中包含一些基于其示例代码的代码:
var location = new Location();
try {
_currentLocation = await location.getLocation();
} on PlatformException catch (e) {
if (e.code == 'PERMISSION_DENIED') {
_locationMsg = 'Permission denied';
}
_currentLocation = null;
}
Run Code Online (Sandbox Code Playgroud)
如插件页面所示,我添加ACCESS_FINE_LOCATION
到 Android 清单中。
问题是,当我在手机上测试应用程序时(使用 Android 9,以防万一),即使位置已启用并且我有 GPS 信号,执行上述代码会导致以下提示:
提示内容为:“为了获得更好的体验,请开启使用 Google 定位服务的设备定位。” ,带有两个按钮:“NO THANKS”和“OK”。
这是非常不友好的:位置已经来自 GPS,没有必要进一步打扰用户。
问题来自哪里,如何避免该提示?我更喜欢报告“未知位置”而不是显示提示。
编辑:请注意,提示没有相关通知用户该位置将被使用,但它是一个谷歌侵犯隐私的功能,当您单击确定,使得谷歌定位精度,如下所述(深藏在设置菜单):
上图写着:“提高定位精度”,带有一个切换按钮。Google 位置准确性:Google 的位置服务通过使用 Wi?Fi 和移动网络来帮助估计您的位置,从而提高了位置准确性。当您的设备处于开机状态时,匿名位置数据将发送给 Google。
单击第一个提示可启用此功能,如果用户不想将其位置数据发送给 Google,则必须手动禁用此功能。禁用它并再次尝试获取位置会导致相同的提示,因此它绝对与警告用户位置数据的使用无关。此外,如果在使用该应用程序之前启用了 Google Location …
我正在使用 FusedLocationAPI 它工作正常,但是当用户禁用位置时,我使用 SettingsApi 向用户显示对话框以启用位置。
在棉花糖及以上设备中,它工作正常,但在 kitkat 中,如果启用或禁用位置,它总是触发 LocationSettingsStatusCodes.RESOLUTION_REQUIRED。
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest);
PendingResult<LocationSettingsResult> result =
LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build());
result.setResultCallback(new ResultCallback<LocationSettingsResult>() {
@Override
public void onResult(LocationSettingsResult locationSettingsResult) {
final Status status = locationSettingsResult.getStatus();
Log.e("status",status.getStatusCode()+"\n"+status.getStatus()+"\n"+status.getStatusMessage());
final LocationSettingsStates LS_state = locationSettingsResult.getLocationSettingsStates();
switch (status.getStatusCode()) {
case LocationSettingsStatusCodes.SUCCESS:
// All location settings are satisfied. The client can initialize location
// requests here.
startLocationUpdates();
break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
// Location settings are not satisfied. But could be fixed by showing the user
// a dialog. …
Run Code Online (Sandbox Code Playgroud) android android-4.4-kitkat fusedlocationproviderapi android-fusedlocation google-location-services
android ×10
flutter ×2
android-gps ×1
dart ×1
fusedlocationproviderclient ×1
gps ×1
kotlin ×1
location ×1