2017-10-31 3 views
0

내가하고 싶은 것은 앱이로드 될 때 사용자 위치를 얻은 다음 버튼을 클릭하면 사용자의 거리가 반경 내에 있는지 확인하기를 원합니다. 내 원하는 위치에 다음 무언가를 할 것입니다Geofence를 사용하여 사용자 좌표를 가져 오는 것이 작동하지 않습니다.

위치는 내가 가진 문제는 무엇입니까 ... 난 단지 사용자가 있는지 확인하기 위해 필요하기 때문에 나는 가장 간단한 방법으로 사용자의 위치를 ​​얻으려고 노력하고있다 또는 "

if (ContextCompat.checkSelfPermission(this, 
    Manifest.permission.READ_CONTACTS) 
    != PackageManager.PERMISSION_GRANTED) { 

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 


    double longitude = location.getLongitude(); 
    double latitude = location.getLatitude(); 

    List<Geofence> mGeofenceList = new ArrayList<Geofence>(); 

    mGeofenceList.add(new Geofence.Builder() 
     .setRequestId("Request ID") 
     .setCircularRegion(latitude, longitude, 480f) 
     .setExpirationDuration(300000) // duration is in millis (5mins) 
     .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER | Geofence.GEOFENCE_TRANSITION_EXIT) 
     .build()); 
} 
,369 : 위치 "주변

는 사용자의 위치 (준수하지만 응용 프로그램 충돌)을 얻을 내 코드입니다
+0

충돌 당시 logcat을 제공하십시오. –

답변

1

아래와 같이 위치 수신기를 사용해보십시오.

public class MainActivity extends Activity implements LocationListener{ 
protected LocationManager locationManager; 
protected LocationListener locationListener; 
protected Context context; 
TextView txtLat; 
String lat; 
String provider; 
protected String latitude,longitude; 
protected boolean gps_enabled,network_enabled; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
txtLat = (TextView) findViewById(R.id.textview1); 

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
} 
@Override 
public void onLocationChanged(Location location) { 
txtLat = (TextView) findViewById(R.id.textview1); 
double lat = location.getLatitude(); 
double longi = location.getLongitude(); 
txtLat.setText("Latitude:" + location.getLatitude() + ", Longitude:" + location.getLongitude()); 
} 

@Override 
public void onProviderDisabled(String provider) { 
Log.d("Latitude","disable"); 
} 

@Override 
public void onProviderEnabled(String provider) { 
Log.d("Latitude","enable"); 
} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
Log.d("Latitude","status"); 
} 
} 

권한 :

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

당신이 onLocationChanged() 메소드의 현재 위도 긴 값을 얻을 것이다. 이 lat 및 long 값을 mGeofenceList 목록에 추가하십시오.

+0

그것이 작동하지 않는다면,'@ override'에 밑줄을 긋고 메소드가 수퍼 클래스의 메소드를 오버라이드하지 않는다고 말합니다. 어떻게 이것을 mGeofenceList 목록에 추가 할 수 있습니까? –

+0

'implements LocationListener'를 액티비티 클래스에 추가 했습니까? –

+0

감사합니다! 어떤 이유로 지오 펜스 (Geofence)가 인정받지 못하고 있습니다 ... 어떻게 된거 야? 그것은 상징이 해결 될 수 없다고 말한다. –

관련 문제