GPS에 대한 기록 포인트

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);
    }

좋은 웹페이지 즐겨찾기