안드로이드 개발이 시작되었습니다.



 



이 기사는 Goodpatch Advent Calendar 2015 12일째 게시물입니다.
어제는 @ 아오시 씨에 의한 「 GitHub와 Slack과의 제휴에 편리한 Hubot 플러그인을 2개 소개합니다 」였습니다.

자기 소개와 Android 엔지니어가 된 이유



만나서 반갑습니다, Goodpatch에서 엔지니어를하고 있습니다 @hayato-k입니다.
Java 엔지니어를 나름대로 하고 있었던 저입니다만, 현재 폐사에서는 Android 엔지니어가 부족하고 있어 Java를 하고 있었던 것으로부터 조금 해 보자고 하는 것으로 처음으로 보았습니다.
실제가 되어 몇 달, 조금 망설이는 개소가 있었으므로 그 부분에 대해서 이야기하자고 생각합니다.

망설이는 곳



지도에서 현재 위치를 GPS에서 취득하여 현재 위치로 이동한다는 처리를 만들었을 때의 이야기가 됩니다.
현재 사용중인 단말기에서 위치 정보를 취득 할 수없는 상태에서 현재 위치의 위치 정보를 취득 할 수 있도록 전환했을 때 현재 위치 취득이 즉시 취해지지 않고 현재 위치 정보를 GPS에서 취득하는 데 약간의 시간이 걸립니다. 버리는 곳입니다.

사용했던 방법



초기 구현에서는getBestProvider를 사용하여 빨리 구현했습니다.
이것은 이것으로 편하게 실장할 수 있어 GPS의 취득에 있어서의 세세한 설정도 할 수 있으므로 좋지만, 대충이라도 좋기 때문에, 곧바로 위치 정보를 취득하고 싶다고 하는 이번의 경우라고 맞지 않았던 느낌입니다.

다른 방법을 조사



다른 방법으로, 곧바로 현재 위치를 취득할 수 있는 방법이 없는지 조사해 보면 GPS로부터 현재 위치를 취득하기까지, 단말에 따라서는 2, 3분 걸리고, 네트워크로부터 취득하는 것은 그렇게 시간이 걸리지 않는다고 하는 것이 좋아요.

그건 그렇고, 내가 확인한 기기는 SOL22의 Android OS 4.2.2입니다.

해보자



조사한 결과로부터, 현재 위치를 취득하는 방법을 처음에는 네트워크로 취득해, GPS로 취득할 수 있으면(자) GPS로 전환해 취득한다고 하는 코드를 실장했습니다.

    private String selectProvider() {
        String provider = "";
        LocationManager locationManager = (LocationManager) getSystemService(this.LOCATION_SERVICE);

        // ネットワーク取得
        if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
            Location locationNetwork = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
            if (locationNetwork != null) {
                provider = LocationManager.NETWORK_PROVIDER;
            }
        }

        // GPS取得
        if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            Location locationGPS = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            if(locationGPS != null){
                provider = LocationManager.GPS_PROVIDER;
            }
        }
        return provider;
    }

이런 느낌이군요.
네트워크로 취득, GPS로 취득을 각각 실시해 정밀도가 높은 것을 돌려줍니다.
(조금 더 조건문을 줄이고 싶다・・・)

마지막으로



망설였다고도 해결할 수 있었으므로, 개인적으로는 좋았습니다.
안드로이드 개발은 자바를 하고 있다고 내부 코드는 잘 이해할 수 있고, 하기 쉬운 것이므로 자바의 서버 측을 개발하고 있고, 안드로이드 개발을 하고 있지 않다고 하는 사람은 (하고 있는 사람도) 꼭 해 봐 제발.

 



다음은 Goodpatch의 엔지니어 @tanishi에 의한 "Stripe"에 대한 이야기입니다.
그럼 @tanishi 씨 감사합니다.

좋은 웹페이지 즐겨찾기