• Хочу подключиться к веб серваку и принять оттуда джейсон, вписав пароль и логин но подключения нет?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Это Android. Ты пермишен на доступ в интернет указал в манифесте? Также смущает URL: по коду у тебя GET запрос, а параметр data ты передаешь пустым. И ничего не увидел про авторизацию.
    Ответ написан
    Комментировать
  • Best practice по клиент-серверным приложениям для Android?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Если для вас MVP и Rxjava - костыли, то посмотрите в сторону гугловых ViewModel, LiveData и т.п. На сайте для андроид-разработчиков есть примеры использования. Правда, у вас выйдет опять "костыль" в виде MVVM от гугла, но зато никаких проблем с поворотом экрана.
    Ответ написан
  • Как правильно тестировать Android приложение?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Во-первых, модели вообще не должны знать с помощью чего вы выходите в интернет: OkHttp, Retrofit и т.п.

    Во-вторых, модели вообще ничего делать не должны. Надеюсь, вы говорите про классы бизнес-логики. Т.е. про то, что сейчас называют такими словами как UseCase или Interactor.

    Поэтому, для работы с API создаёте Interface, который описывает методы и их параметры для взаимодействия. Класс, реализующий данный интерфейс, передаётся в ваш интерактор через конструктор или метод-сеттер. Но конструктор лучше. А внутри этого класса у вас уже та или иная реализация работы с API. При этом ваш интерактор вообще не должен знать как там и что реализовано. У него есть знание только об интерфейсе класса.

    Для рабочей сборки приложения вы передайте реальный класс, а для тестов его тестовую реализацию: стабы или моки. И для юнит-тестов вам никакой интернет и мок-вебсерверы не нужны.
    Ответ написан
  • Пытаюсь разобраться в RxJava на javaFx, падает "hello world"?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Neonoviiwolf, похоже у вас библиотека подключена только в IDE, но отсутствует в JAR. Возьмите любой декомпилятор JAR-файлов и проверьте наличие библиотеки RxJava. Если её там нет, то нужно проверить настройки сборки.
    Ответ написан
  • Как лучше считывать такие числа по средствам java из строки?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Встроенного ничего нет. Но с регулярными выражениями можно легко реализовать:

    String src = "0.0-2.013896591961E-04-1.136868377216E-12";
    Pattern p = Pattern.compile("\\d+\\.\\d+(E-\\d+)?");
    Matcher m = p.matcher(src);
    while (m.find()) {
        try {
            double value = Double.parseDouble(m.group(0));
            System.out.println(value);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }


    Тут можно попробовать - tpcg.io/cZrFFv
    Ответ написан
    Комментировать
  • Фэйковая геолокация по расписанию?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Чтобы точно по расписанию не видел. Но есть приложения, которые позволяют задать маршрут и скорость движения. В результате эмулируется перемещение от точки к точке. Если рассчитать расстояние, то можно задать нужную скорость движения, чтобы быть в нужной точке к заданному времени. При этом платные приложения позволяют сохранять такие маршруты на будущее.

    Чтобы пользоваться таким приложением и реально скрыть фейковые данные, надо иметь рутованный телефон. Что начальство должно пресекать на корню (правда тогда телефон должен быть корпоративным). Хотя есть возможность разработчику всё равно понять, что эти данные от GPS фейковые, т.к. качество эмуляции координат всех программ в магазине приложений не высокого уровня.
    Ответ написан
    Комментировать
  • Почему заблокировали аккаунт разработчика Google Play?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Насколько я понимаю, вы ничего не нарушили. Есть какие-то проблемы с вашим кошельком, который привязан к аккаунту разработчика для вывода средств. Т.к. в данный момент кошелек не работает, они приостановили работу аккаунта. Думаю, если наладить работу с кошельком, то доступ к аккаунту через какой-то время будет восстановлен. В данном случае, нарушение условий, вероятно, в том, что нет доступа к кошельку.
    Ответ написан
    Комментировать
  • Как правильно реализовать callback в java?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Callback надо реализовать в виде отдельного интерфейса и сказать, что наше активити реализует этот интерфейс. В результате мы в DoRequestInterface просто передаем ссылку на нашу активити. А в активити реализуем нужные два метода для Callback. Во избежание утечек, рекомендую callback оборачивать в мягкую ссылку.
    interface DoRequestInterface {
        void execute(String url, DoRequesCallback callback);
    }
    
    interface DoRequesCallback {
        void successReq(JSONObject response);
        void errorReq(VolleyError error);
    }
    
    public abstract class DoRequestClass implements DoRequestInterface {
    	@Override
      public void execute(String url, DoRequesCallback callback) {
          RequestQueue queue = Volley.newRequestQueue(context);
    			final WeakReference<DoRequesCallback> weakCallback = new WeakReference<DoRequesCallback>(callback);
          JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
              @Override
              public void onResponse(JSONObject response) {
    							DoRequesCallback callback = weakCallback.get();
    							if (callback != null) {
                  	callback.successReq(response);
    							}
              }
          }, new Response.ErrorListener() {
              @Override
              public void onErrorResponse(VolleyError error) {
    						DoRequesCallback callback = weakCallback.get();
    						if (callback != null) {
                	callback.errorReq(error);
    						}
              }
    
          });
          queue.add(jsObjRequest);
      }
    }
    
    public class MainActivity extends AppCompatActivity implements DoRequesCallback {
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		sendButton.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
              	DoRequestClass doRequestClass = new DoRequestClass();
    	          doRequestClass.execute("http://myserver.local", this);
    		      }
    		  });
    	}
    
    	@Override
    	public void successReq(JSONObject response){
    	    txtDisplay.setText("Response => "+response.toString());
    	}
    
    	@Override
    	public void errorReq(VolleyError error){
    	    txtDisplay.setText("Error => "+error.toString());
    	}
    }
    Ответ написан
    Комментировать
  • Как рандомно раскидать надписи по кнопкам?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Иметь два OnClickListener: один для правильного ответа, другой для неправильного. На верную кнопку ставим OnClickListener для правильного ответа, на остальные для неправильного. В результате никакого id хранить не надо. Ну, а рандомно раскидать кнопки, думаю, не составит труда: просто рандомно выбираемой номер\id верной кнопки, а остальные назначаем произвольно.
    Ответ написан
  • Как сгенерировать рандомные не одинаковые числа?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    int n = getContainsRandom(rtn, count)+1;

    В методе getContainsRandom вы проверяете свой список на вхождение числа, но в список помещаете число на единицу большее. И вот тут уже нет гарантий, что его в списке нет. К примеру, getContainsRandom вам вернет цифру 3 т.к. её нет в списке и вы в список помещаете цифру 4, а она уже в списке может быть.
    Ответ написан
    Комментировать
  • Почему результат кода разный?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    По-моему, вы с циклами намутили: массив у вас двумерный, но в обоих циклах вы запрашиваете длину только одного из индексов. Зато внутри в условиях подразумеваете использование обоих индексов. Вполне возможно, что ошибку вы не ловите в первом варианте кода из-за того, что используете другой порядок циклов.
    Ответ написан
    2 комментария
  • Как разделить Android Activity или фрагменты и состояние приложения?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Я использую для этого стейт-машину:
    1. Создаем обертку для стейт-машины, в которую есть возможность передать событие. ПРодумываем сохранение и восстановление состояния
    2. Используем Singleton или Dependecy Injection для получения ссылки на нашу обертку
    3. Прописываем состояния и события стейт-машины
    4. Создаем интерфейс для подписки на стейт-машину, в котором есть метод возвращающий фрагмент или интент
    5. Каждый фрагмент или активити наследуются от базового, который имплементирует интерфейс подписчика. В обработчики стартуем пришедший интент или фрагмент
    6. В самой активити и фраменте отправляем стейт-машине события
    Ответ написан
  • Google maps api. Как определить город пользователя, не спрашивая у него, через navigator?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Есть два варианта получения координат:
    1. Получить последнюю известную координату - LocationManager.getLastKnownLocation(provider) или LocationServices.FusedLocationApi.getLastLocation. Второй вариант потребует подключения gms-библиотеки. Этот вариант более быстрый, но большая погрешность т.к. когда была эта последняя координата не известно.
    2. Использовать стандартный механизм для получения координат через LocationManager.requestLocationUpdates(). При этом координаты можно получить не только от GPS, но и от сотовой сети. Вариант немного дольше по времени, в отличие от первого, но даёт более точно местоположение.
    Ответ написан
  • Дождаться ответа на запрос, с другого приложения?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Используйте в обоих приложениях BroadcastReceiver для отправки друг другу сообщений.
    Ответ написан
    Комментировать
  • Как сделать кнопку с картинкой и текстом в андроид?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    У Google достаточно вроде понятно написано как добавить картинки на кнопку: developer.android.com/intl/ru/guide/topics/ui/cont... Если же говорить о кнопке, которая в зависимости от состояния меняет свой внешний вид, то мне кажется тут нужно модифицировать внешний вид Checkbox. Думаю, что этот вариант вам поможет: stackoverflow.com/questions/3192173/change-icons-o...
    Ответ написан
    Комментировать
  • Как создать карту для андроид приложения?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Используйте osmdroid. Просто в build.gradle в раздел dependencies добавьте строчку:
    compile 'org.osmdroid:osmdroid-android:4.3'
    Ответ написан
    Комментировать
  • Как получить json через async task в android?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Суть AsyncTask в том, что вы запускаете какой-то процесс фоном и не дожидаетесь ответа. А значит, execute() не задерживает выполнение вашего кода и продолжает работать в отдельном потоке. После того, как задача в AsyncTask будет выполнена, результат как уже писали выше, передаётся в метод onPostExecute(). Именно там вы должны получить результат и решить что с ним делать.
    И не торопитесь использовать сторонние библиотеки, успеете ещё. Постарайтесь понять как работают базовые возможности Android.
    Ответ написан
    Комментировать
  • Есть ли UI компонент с выпадающей шторкой?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Я использую https://github.com/chenjishi/SlidingUpPaneLayout. На основном фрагменте вверху размещаю изображение шторки и при её открытии она остаётся видна внизу.
    Ответ написан
    2 комментария
  • Из повара в программисты, возможно ли такое? Где пройти курсы в Питере и надо ли?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Всё получится и потом не пожалеете!!! Я сам с юных лет хотел стать программистом. В школе начал мучить ZX Spectrum. Потом первый курс в универе. Но безмозглость и плохая компания довели до отчисления в середине первого курса. А там армия. А из армии без профессии, да и до армии умудрился семьей обзавестить. Начал с охранника - 3 года, потом служба безопасности - 2 года, потом столяр-станочник - 1 год, потом монтажник рекламы, менеджер по рекламе, менеджер по продажам, отделочник, снова менеджер по продажам. Только ближе к 28 отучился на курсах 1С и стал программистом 1С. Там просидел пять лет, но всегда чувствовал что не то. Начал по книжкам писать свой проект для Android, который вел 1,5 года. Выложил его на гитхабе и начал пытаться пройти собеседования. Но браковали за первые же 5 минут - не хватало университетских знаний по алгоритмам, структурам данных и т.п. Потом параллельно работе в 1С взял один проект по фрилансу. Им понравилось и взяли на полную занятость. И вот уже два года как разработчик Android и iOS. И мой код намного лучше, чем код тех, кого нанимают, когда работы много и мне одному не потянуть.
    Уверен, что у вас не так всё запущенно как было у меня. Поэтому, если захотите и постараетесь, то сможете. И потом не пожалеете.
    Ответ написан
    4 комментария
  • Как включить fake gps, не разрешая в андроиде фиктивное местоположение. Или включить разрешение но так чтобы нельзя было отследить?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Надеюсь вы не найдете ответа на свой вопрос, так как такие ограничения в программах ставят не случайно. А те, кто пытается найти обход эти ограничений, чаще всего жульничают и обманывают конторы на деньги.
    Ответ написан
    3 комментария