Ответы пользователя по тегу Java
  • Android и отслеживание местоположения?

    Для определения местоположения вы можете использовать как стандартный requestLocationUpdate, так и Fused Location Provider, который является частью api Google play services. Плюсами решения на основе Fused Location Provider является то, что вам не надо самому подыскивать наиболее точный источник координат, он сделает это за вас. Если запускать его с критериями для определения наиболее точного местоположения, то он будет работать по следующему принципу:
    1) Если GPS доступен и включен, то выбирается GPS_PROVIDER в качестве источника.
    2) Если GPS недоступен то выбирается NETWORK_PROVIDER. В данном случаи координаты определяются при помощи вышек сотовой связи и WIFI.
    3) Если не того не другого нет то используется PASSIVE_PROVIDER. Тут система пытается использовать любой способ получить хоть какое-то местоположение в том числе и при использовании акселерометра. Этот провайдер наименее точный.

    Так вот Fused Location Provider включает в себя все три и переключается между ними в зависимости от ситуации для получения наиболее точного место положения, так же при его использовании заряд батареи жрется медленнее. Его главными минусами является то, что для его работы необходим Google play services и то, что вы не сможете отследить какой именно тип провайдера используется в данный момент.

    Что касается стандартного LocationManager, то вам придется самому определять какой провайдер использовать и переключаться между ними в ручную. В общем все делать ручками. Плюсом является то, что вы полностью контролируете весь процесс.
    От себя добавлю что я юзал Fused Location Provider и работает он просто замечательно, главное чтобы его версия была 7 и выше, на 6 давал сильный разброс по координатам.
    Ответ написан
    Комментировать
  • Как обновлять время в приложении?

    Вот так например, если ни чего не напутал:
    Timer myTimer = new Timer(); 
    final Handler uiHandler = new Handler();
    final TextView txtResult = (TextView) findViewById(R.id.вашid);
    myTimer.schedule(new TimerTask() { 
        @Override
        public void run() {
            Calendar calendar = Calendar.getInstance();
    	SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd:MMMM:yyyy HH:mm:ss a", Locale.getDefault());
    	final String strDate = simpleDateFormat.format(calendar.getTime());
    
            uiHandler.post(new Runnable() {
                @Override
                public void run() {
                    txtResult.setText(strDate);
                }
            });
        });
    }, 5000);
    Ответ написан
    3 комментария