• Есть ли программа для повторных фото с того же ракурса?

    aakumykov
    @aakumykov Автор вопроса
    Начинающий Android-разработчик
    Конкретно для таких фото подходит программа для смартфона Open Camera, в ней есть функция "изображение-призрак", которая накладывает на видоискатель полупрозрачную картинку. Выбрав такой картинкой старое фото, можно сделать "такое же" фото нашего времени.
    Но есть нюанс: нынешние смартфоны обладают широкоугольным объективом, около 18 мм, а раньше самым ходовым был 50-мм объектив. В итоге перспектива фото будет отличаться от оригинала.
    Можно попробовать фотоаппарат линейки Samsung Galaxy Camera, у них зум-объектив (я пока не пробовал).
    Ответ написан
    Комментировать
  • Заставить работать кнопку в программе без исходников - реально ли?

    aakumykov
    @aakumykov Автор вопроса
    Начинающий Android-разработчик
    Реальность оказалась богаче вымысла: программа сломалась в начале зимы и "починилась" сейчас, в марте. Изменение даты на февраль опять привело в нерабочее состояние. В своих тестах я менял значение года, кто же мог подумать, что это месяц О_о.
    Ответ написан
    Комментировать
  • Нужно ли проверять все аргументы метода/функции?

    aakumykov
    @aakumykov Автор вопроса
    Начинающий Android-разработчик
    Пораскинул мозгами и пришёл к следующему выводу.

    Мой метод принимает данные:
    1) пользовательские (URL картинки), которые меняются в процессе эксплуатации программы и которые невозможно предугадать;
    2) ссылки на системные компоненты (Context), которые предоставляются на этапе разработки.

    Пользовательские данные непредсказуемы на этапе разработки, поэтому их нужно тщательно проверять, сообщать пользователю об ошибках (и писать в лог для разработчика).

    Системные компоненты - предсказуемая вещь, они контролируются на этапе разработки. Если программист написал так, что в качестве аргумента Context встало что-то другое, то это грубая ошибка, должно быть выброшено исключение, программа должна упасть. Исключение выбросит сама система, делать дополнительные проверки - лишняя работа.
    Для удобства можно всё-таки их проверить и выбросить IllegalArgumentException с осмысленным сообщением, чтобы потом не вышло NullPointerException, с которым придётся разбираться дольше. Но обрабатывать и "поглощать" эти ошибки не нужно, так как это скроет от разработчика ошибки в коде.

    Класс, таким образом, будет выглядеть так

    public class ImageLoader {
    	public static void loadImageToView(Context context, String imageURL) 
    	// Пугаем исключением, чтобы донести до пользователя ошибку
    	throws ImageLoaderException 
    	{
    		// Выбрасываем IllegalArgumentException, но не предупреждаем о нём: 
    		// программа должна упасть, если программист накосячил
    		if (! context instanceof Context)
    			throw new IllegalArgumentException("Некорректный аргумент Context: "+context);
    
    		// Сообщаем пользователю о пустом URL
    		if (!isEmpty(imageURL))
    			throw new NoURL_Exception("imageURL не может быть пустым");
    
    		// Сообщаем о некорректном URL
    		if (!validFormat(imageURL))
    			throw new WrongURL_Exception("Некорректный imageURL: "+imageURL);
    
    
    		// ...
    		// Собственно работа
    		// ...
    	}
    }

    Ответ написан