gpt4 book ai didi

java - 找不到适合 requestLocationUpdates 的方法

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:23 28 4
gpt4 key购买 nike

这是我的 MainActivity.java:

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;


public class MainActivity extends Activity {



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new GetCurrentLocation();
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 5000, 10, locationListener);
}

这是我的 GetCurrentLocation.java:

import android.app.Activity;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.google.android.gms.location.LocationListener;

import java.io.IOException;
import java.util.List;
import java.util.Locale;

public class GetCurrentLocation extends Activity implements LocationListener {
String longitude;
String latitude;
String cityName;

public void onLocationChanged(Location loc) {
//editLocation.setText("");
//pb.setVisibility(View.INVISIBLE);
Toast.makeText(
getBaseContext(),
"Location changed: Lat: " + loc.getLatitude() + " Lng: "
+ loc.getLongitude(), Toast.LENGTH_SHORT).show();
longitude = "Longitude: " + loc.getLongitude();
//Log.v(TAG, longitude);
latitude = "Latitude: " + loc.getLatitude();
//Log.v(TAG, latitude);

/*------- To get city name from coordinates -------- */
//String cityName = null;
Geocoder gcd = new Geocoder(getBaseContext(), Locale.getDefault());
List<Address> addresses;
try {
addresses = gcd.getFromLocation(loc.getLatitude(),
loc.getLongitude(), 1);
if (addresses.size() > 0)
System.out.println(addresses.get(0).getLocality());
cityName = addresses.get(0).getLocality();
}
catch (IOException e) {
e.printStackTrace();
}

//editLocation.setText(s);
}

//@Override
public void onProviderDisabled(String provider) {}

//@Override
public void onProviderEnabled(String provider) {}

//@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}


}

我得到的错误是:

Error:(40, 24) error: no suitable method found for requestLocationUpdates(String,int,int,com.google.android.gms.location.LocationListener)
method LocationManager.requestLocationUpdates(long,float,Criteria,PendingIntent) is not applicable
(actual argument String cannot be converted to long by method invocation conversion)
method LocationManager.requestLocationUpdates(String,long,float,PendingIntent) is not applicable
(actual argument com.google.android.gms.location.LocationListener cannot be converted to PendingIntent by method invocation conversion)
method LocationManager.requestLocationUpdates(long,float,Criteria,android.location.LocationListener,Looper) is not applicable
(actual and formal argument lists differ in length)
method LocationManager.requestLocationUpdates(String,long,float,android.location.LocationListener,Looper) is not applicable
(actual and formal argument lists differ in length)
method LocationManager.requestLocationUpdates(String,long,float,android.location.LocationListener) is not applicable
(actual argument com.google.android.gms.location.LocationListener cannot be converted to android.location.LocationListener by method invocation conversion)

我对应该修复代码的哪一部分一无所知,我尝试用谷歌搜索但没有找到相关的解决方案。

最佳答案

您使用了错误的 LocationListener 类。您需要替换它:

import com.google.android.gms.location.LocationListener;

用这个:

import android.location.LocationListener;

com.google.android.gms.location 内容与作为 Google Play 服务一部分的 FusedLocationProviderApi 一起使用。

标准的 Android 位置信息在 android.location 中。

此外,您还有 GetCurrentLocation extends Activity。但它并不是真正的 Activity。您需要删除 extends Activity 子句。这将导致问题,因为您正在该类的某些方法中调用 getBaseContext()。要解决此问题,请让 GetCurrentLocation 的构造函数采用 Context 参数并将其保存在私有(private)成员变量中。然后在需要 Context 而不是调用 getBaseContext() 时使用它。

MainActivity 中,当您创建一个新的 GetCurrentLocation 时,您可以这样做:

LocationListener locationListener = new GetCurrentLocation(this);

this 作为 Context 参数传递(Activity 扩展 Context)。

关于java - 找不到适合 requestLocationUpdates 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28892120/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com