GPS에 대한 기록 포인트
1. GPS가 켜져 있는지 판단
public boolean isGpsOn()
{
LocationManager alm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if( alm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER))
{
return true;
}
else
{
return false;
}
}
2. GPS를 통해 위치 파악
public void getLocation()
{
try
{
String serviceName = Context.LOCATION_SERVICE;
mLocationManager = (LocationManager)getSystemService(serviceName);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE); //
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
String provider = mLocationManager.getBestProvider(criteria, true); // GPS
Location location = mLocationManager.getLastKnownLocation(provider); // GPS
}
catch(Exception e)
{
e.printStackTrace();
}
}
3. Google 지도를 통해 위치 및 좌표 얻기
try
{
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation gcl = (GsmCellLocation)tm.getCellLocation();
int cid = gcl.getCid();
int lac = gcl.getLac();
int mcc = Integer.valueOf(tm.getNetworkOperator().substring(0, 3)); // , 460
int mnc = Integer.valueOf(tm.getNetworkOperator().substring(3, 5)); // 00 01
// JSON
JSONObject holder = null;
holder = new JSONObject();
holder.put("version", "1.1.0");
holder.put("host", "maps.google.com");
holder.put("request_address", true);
JSONArray array = new JSONArray();
JSONObject data = new JSONObject();
data.put("cell_id", cid); // 25070
data.put("location_area_code", lac);// 4474
data.put("mobile_country_code", mcc);// 460
data.put("mobile_network_code", mnc);// 0
array.put(data);
holder.put("cell_towers", array);
String url = "http://www.google.com.hk/loc/json";
DefaultHttpClient client = HttpClientFactory.getInstance();
HttpPost post = new HttpPost(url);
StringEntity entity = new StringEntity(holder.toString());
post.setEntity(entity);
HttpResponse response = client.execute(post);
retCode = response.getStatusLine().getStatusCode();
String result = EntityUtils.toString(response.getEntity());
Log.i("OBD", "Google : " + result);
if(result.equals("{}"))
{
return -1;
}
// gps = 3; gps =2 cellid=1; google=0 ; -1;
if( level<0 )
{
JSONObject jsonObject = new JSONObject(result);
String location = jsonObject.getString("location");
Log.i("OBD", "Google : " + location);
JSONObject jsonJWD = new JSONObject(location);
Log.i("OBD", "Google :" + jsonJWD.getString("longitude") + " : " + jsonJWD.getString("latitude"));
longitude = jsonJWD.getString("longitude");
latitude = jsonJWD.getString("latitude");
Log.i("OBD", "getTaskGoogle " + "longitude " +longitude + " latitude " + latitude);
String address = jsonJWD.getString("address");
JSONObject jsonAddress = new JSONObject(address);
if (address.contains("street_number")) {
Log.i("OBD", jsonAddress.get("city") + " "
+ jsonAddress.get("street") + " "
+ jsonAddress.get("street_number"));
String accuracy = jsonJWD.getString("accuracy");
Log.i("OBD", "accuracy: " + accuracy);
position = jsonAddress.get("city") + " " + jsonAddress.get("street")
+ " " + jsonAddress.get("street_number")
+ " : " + accuracy
+ " ";
} else {
Log.i("OBD", jsonAddress.get("city") + " "
+ jsonAddress.get("street"));
String accuracy = jsonJWD.getString("accuracy");
Log.i("OBD", "accuracy: " + accuracy);
position = jsonAddress.get("city") + " " + jsonAddress.get("street")
+ " : " + accuracy
+ " ";
}
}
else
{
Log.i("OBD", " , Google_CellID ");
return -1;
}
}
catch (UnsupportedEncodingException e) {
System.out.println(e);
} catch (ClientProtocolException e) {
System.out.println(e);
} catch (ParseException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
} catch (Exception e) {
System.out.println(e);
}
4. Google을 통해 역지리적 해석, 즉 경위도 좌표를 업로드하여 성, 시급, 현급 등을 포함한 구체적인 위치를 얻는다.
http://maps.googleapis.com/maps/api/geocode/json?latlng=39.983434,116.316547&sensor=true&language=zh-CN
매개 변수latlng은 업로드된 경위도 좌표입니다. 중간에 빈칸이 없습니다. 먼저 위도 다음에 경도입니다.
파라미터language는 추가 업로드 언어 형식입니다. PC에서 중국어로 되돌아오고 아날로그나 실제 컴퓨터에서 영어로 되돌아오기 때문에 이 파라미터를 추가합니다.
5. 2.2API에서 GPS 켜기
/**
* GPS , ,
*/
public void openCloseGPS()
{
Intent myIntent = new Intent();
myIntent.setClassName("com.android.settings",
"com.android.settings.widget.SettingsAppWidgetProvider");
myIntent.addCategory("android.intent.category.ALTERNATIVE");
myIntent.setData(Uri.parse("3"));
sendBroadcast(myIntent);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception Class에서 에러 코드 해석 ~초기초편~직장에서 C# 프로젝트가 내뿜는 오류 코드를 구문 분석하고 오류의 위치를 확인하기 위해 Exception class를 활용할 수 있었습니다. 지금까지 Exception Class 에 대해서 별로 파악할 수 없었기 때...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.