GPS 모듈이없는 장치가 있습니다. 안드로이드에서 GPS 모듈을 사용하지 않고 Lat Lon 값을 얻는 방법이 있습니까?안드로이드에서 GPS를 사용하지 않고 Latitude Longitude 값을 얻는 방법?
안녕하세요, 유권자는이 질문에서 무엇이 잘못되었는지 설명해 주시겠습니까? 질문에 대한 답변이 있으면 질문을 이해하려고 시도하십시오.
GPS 모듈이없는 장치가 있습니다. 안드로이드에서 GPS 모듈을 사용하지 않고 Lat Lon 값을 얻는 방법이 있습니까?안드로이드에서 GPS를 사용하지 않고 Latitude Longitude 값을 얻는 방법?
안녕하세요, 유권자는이 질문에서 무엇이 잘못되었는지 설명해 주시겠습니까? 질문에 대한 답변이 있으면 질문을 이해하려고 시도하십시오.
패키지의 자바 클래스가 pu 이하입니다.
MyLocation.java
import java.util.Timer;
import java.util.TimerTask;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
public class MyLocation {
Timer timer1;
LocationManager lm;
LocationResult locationResult;
boolean gps_enabled=false;
boolean network_enabled=false;
public boolean getLocation(Context context, LocationResult result)
{
//I use LocationResult callback class to pass location value from MyLocation to user code.
locationResult=result;
if(lm==null)
lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
//exceptions will be thrown if provider is not permitted.
try
{
gps_enabled=lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
catch(Exception ex)
{
ex.printStackTrace();
}
try
{
network_enabled=lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
}
catch(Exception ex)
{
ex.printStackTrace();
}
//don't start listeners if no provider is enabled
if(!gps_enabled && !network_enabled)
return false;
if(gps_enabled)
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListenerGps);
if(network_enabled)
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListenerNetwork);
timer1=new Timer();
timer1.schedule(new GetLastLocation(), 20000);
return true;
}
LocationListener locationListenerGps = new LocationListener()
{
public void onLocationChanged(Location location)
{
timer1.cancel();
locationResult.gotLocation(location);
// lm.removeUpdates(this);
//lm.removeUpdates(locationListenerNetwork);
}
public void onProviderDisabled(String provider) {}
public void onProviderEnabled(String provider) {}
public void onStatusChanged(String provider, int status, Bundle extras) {}
};
LocationListener locationListenerNetwork = new LocationListener()
{
public void onLocationChanged(Location location)
{
timer1.cancel();
locationResult.gotLocation(location);
// lm.removeUpdates(this);
// lm.removeUpdates(locationListenerGps);
}
public void onProviderDisabled(String provider) {}
public void onProviderEnabled(String provider) {}
public void onStatusChanged(String provider, int status, Bundle extras) {}
};
class GetLastLocation extends TimerTask
{
@Override
public void run() {
//lm.removeUpdates(locationListenerGps);
//lm.removeUpdates(locationListenerNetwork);
Location net_loc=null, gps_loc=null;
if(gps_enabled)
gps_loc=lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(network_enabled)
net_loc=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
//if there are both values use the latest one
if(gps_loc!=null && net_loc!=null){
if(gps_loc.getTime()>net_loc.getTime())
locationResult.gotLocation(gps_loc);
else
locationResult.gotLocation(net_loc);
return;
}
if(gps_loc!=null){
locationResult.gotLocation(gps_loc);
return;
}
if(net_loc!=null){
locationResult.gotLocation(net_loc);
return;
}
locationResult.gotLocation(null);
}
}
public static abstract class LocationResult
{
public abstract void gotLocation(Location location);
}
}
지금, 당신의 활동에 당신이 코드 아래 등 위치를 찾을 수 있습니다 : 당신이 장치의 GPS에 필요 없다 위의 코드와
public static Location loc;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_layout);
// to Find the Location
LocationResult locationResult = new LocationResult(){
@Override
public void gotLocation(final Location location){
loc=location;
System.out.println("Latitude: "+loc.getLatitude());
System.out.println("Longitude: "+loc.getLongitude());
}
};
MyLocation myLocation = new MyLocation();
myLocation.getLocation(SplashActivity.this, locationResult);
}
}
. 자동으로 최적의 위치 관리자가 있는지 확인하고 위치 관리자를 기반으로 위치를 찾습니다.
AndroidManifest.xml 파일에도 일부 권한이 필요합니다.
희망이 있으면 도움이 될 것입니다.
Location location =myManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
latPoint=location.getLatitude();
lngPoint=location.getLongitude();
희망이 도움이 될 것입니다. 여기 우리는 GPS를 사용하지 않는 네트워크 제공 업체를 통해 위도와 경도를 얻고 있습니다.
장치에 GPS가 없으면 Network_Provider를 사용하여 위도와 경도를 구할 수 있습니다. Network_Provider를 사용하여 위도와 경도를 얻으려면 아래 코드를 사용하면 문제가 해결됩니다.
LocationManager lm = (LocationManager) GlobalApplication
.getAppContext().getSystemService(Context.LOCATION_SERVICE);
Location location = lm
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(location != null){
double latitude = location.getLatitude();
double longitude = location.getLongitude();
}
위치 변수에 null이 있습니다 ... 내 GPS가 켜져 있지 않고 GPS와 거리가 멀고 위도가 길어지기를 원합니다 ... –
loc 변수에 대해 NullPointerException이 발생합니다. 왜 그런지 아십니까? 'FATAL EXCEPTION : Timer-0'도 표시됩니다. – WebDevDanno
어느 라인에서 NPE를 얻을 수 있습니까? 내 사건에 좋았어. –