<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; мобильная разработка</title>
	<atom:link href="http://web.snauka.ru/issues/tag/mobilnaya-razrabotka/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Fri, 17 Apr 2026 07:29:22 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Разработка мобильного приложения на Android для расчёта импульса тела по массе и скорости</title>
		<link>https://web.snauka.ru/issues/2026/02/104256</link>
		<comments>https://web.snauka.ru/issues/2026/02/104256#comments</comments>
		<pubDate>Tue, 24 Feb 2026 14:48:15 +0000</pubDate>
		<dc:creator>Исмагилов Артур Рустамович</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[импульс тела]]></category>
		<category><![CDATA[клиентское приложение]]></category>
		<category><![CDATA[мобильная разработка]]></category>
		<category><![CDATA[пользовательский интерфейс]]></category>
		<category><![CDATA[разработка мобильного приложения]]></category>
		<category><![CDATA[физические расчёты]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2026/02/104256</guid>
		<description><![CDATA[В современном мире мобильные устройства стали неотъемлемой частью образовательного процесса и инженерной деятельности. Студенты физико-математических специальностей, преподаватели и специалисты часто нуждаются в быстрых расчётах без использования громоздких компьютеров или специализированного ПО. Разработка клиентских Android-приложений для решения типовых физических задач, таких как вычисление импульса тела, позволяет автоматизировать рутинные вычисления и сделать процесс обучения более интерактивным. Импульс [...]]]></description>
			<content:encoded><![CDATA[<p>В современном мире мобильные устройства стали неотъемлемой частью образовательного процесса и инженерной деятельности. Студенты физико-математических специальностей, преподаватели и специалисты часто нуждаются в быстрых расчётах без использования громоздких компьютеров или специализированного ПО. Разработка клиентских Android-приложений для решения типовых физических задач, таких как вычисление импульса тела, позволяет автоматизировать рутинные вычисления и сделать процесс обучения более интерактивным. Импульс тела — одна из фундаментальных величин в механике, рассчитываемая как произведение массы тела на его скорость. Создание простого и понятного интерфейса для ввода исходных данных и мгновенного получения результата является актуальной задачей, демонстрирующей основы мобильной разработки и взаимодействия с пользователем.</p>
<p>Алгоритм решения задачи по созданию клиентского Android-приложения для расчёта импульса тела по массе и скорости включает следующие последовательные шаги разработки на языке Java:</p>
<ul>
<li>создаём новый проект в среде разработки Android Studio с пустой активностью;</li>
<li>разрабатываем пользовательский интерфейс (разметку) с полями ввода для массы и скорости, кнопкой расчёта и текстовым полем для вывода результата;</li>
<li>инициализируем компоненты интерфейса в коде активности (Activity) с помощью метода findViewById;</li>
<li>устанавливаем обработчик нажатия на кнопку с использованием интерфейса OnClickListener;</li>
<li>получаем введённые пользователем значения из текстовых полей и преобразуем их в числовой формат;</li>
<li>выполняем проверку корректности введённых данных (на наличие пустых полей и отрицательных значений);</li>
<li>вычисляем импульс тела по формуле p = m * v, где m — масса в килограммах, v — скорость в метрах в секунду;</li>
<li>выводим полученный результат в элемент интерфейса, предназначенный для вывода информации.</li>
</ul>
<p>Данный алгоритм универсален и может быть адаптирован для решения широкого круга подобных вычислительных задач, от кинематики до электричества. Основное преимущество реализации на Android заключается в возможности запуска приложения на любом современном смартфоне без необходимости установки дополнительного программного обеспечения.</p>
<p>Ниже приведён фрагмент кода, реализующий логику расчёта импульса тела (файл MainActivity.java):</p>
<p>java</p>
<p><span style="color: #a626a4;">package<span style="color: #0f1115;"> com<span style="color: #383a42;">.<span style="color: #0f1115;">example<span style="color: #383a42;">.<span style="color: #0f1115;">momentumcalculator<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">os<span style="color: #383a42;">.<span style="color: #b76b01;">Bundle<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">view<span style="color: #383a42;">.<span style="color: #b76b01;">View<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">widget<span style="color: #383a42;">.<span style="color: #b76b01;">Button<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">widget<span style="color: #383a42;">.<span style="color: #b76b01;">EditText<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">widget<span style="color: #383a42;">.<span style="color: #b76b01;">TextView<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> android<span style="color: #383a42;">.<span style="color: #0f1115;">widget<span style="color: #383a42;">.<span style="color: #b76b01;">Toast<span style="color: #383a42;">;</span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">import<span style="color: #0f1115;"> androidx<span style="color: #383a42;">.<span style="color: #0f1115;">appcompat<span style="color: #383a42;">.<span style="color: #0f1115;">app<span style="color: #383a42;">.<span style="color: #b76b01;">AppCompatActivity<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></span></p>
<p><span style="color: #a626a4;">public<span style="color: #0f1115;"> <span style="color: #a626a4;">class<span style="color: #0f1115;"> <span style="color: #b76b01;">MainActivity<span style="color: #0f1115;"> <span style="color: #a626a4;">extends<span style="color: #0f1115;"> <span style="color: #b76b01;">AppCompatActivity<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">private<span style="color: #0f1115;"> <span style="color: #b76b01;">EditText<span style="color: #0f1115;"> editTextMass<span style="color: #383a42;">,<span style="color: #0f1115;"> editTextVelocity<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">private<span style="color: #0f1115;"> <span style="color: #b76b01;">TextView<span style="color: #0f1115;"> textViewResult<span style="color: #383a42;">;</span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">private<span style="color: #0f1115;"> <span style="color: #b76b01;">Button<span style="color: #0f1115;"> buttonCalculate<span style="color: #383a42;">;</span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #383a42;">@Override</span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">protected<span style="color: #0f1115;"> <span style="color: #a626a4;">void<span style="color: #0f1115;"> <span style="color: #4078f2;">onCreate<span style="color: #383a42;">(<span style="color: #b76b01;">Bundle<span style="color: #0f1115;"> savedInstanceState<span style="color: #383a42;">)<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">super<span style="color: #383a42;">.<span style="color: #4078f2;">onCreate<span style="color: #383a42;">(<span style="color: #0f1115;">savedInstanceState<span style="color: #383a42;">);</span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #4078f2;">setContentView<span style="color: #383a42;">(<span style="color: #b76b01;">R<span style="color: #383a42;">.<span style="color: #0f1115;">layout<span style="color: #383a42;">.<span style="color: #0f1115;">activity_main<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> editTextMass <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #4078f2;">findViewById<span style="color: #383a42;">(<span style="color: #b76b01;">R<span style="color: #383a42;">.<span style="color: #0f1115;">id<span style="color: #383a42;">.<span style="color: #0f1115;">editTextMass<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> editTextVelocity <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #4078f2;">findViewById<span style="color: #383a42;">(<span style="color: #b76b01;">R<span style="color: #383a42;">.<span style="color: #0f1115;">id<span style="color: #383a42;">.<span style="color: #0f1115;">editTextVelocity<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> textViewResult <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #4078f2;">findViewById<span style="color: #383a42;">(<span style="color: #b76b01;">R<span style="color: #383a42;">.<span style="color: #0f1115;">id<span style="color: #383a42;">.<span style="color: #0f1115;">textViewResult<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> buttonCalculate <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #4078f2;">findViewById<span style="color: #383a42;">(<span style="color: #b76b01;">R<span style="color: #383a42;">.<span style="color: #0f1115;">id<span style="color: #383a42;">.<span style="color: #0f1115;">buttonCalculate<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> buttonCalculate<span style="color: #383a42;">.<span style="color: #4078f2;">setOnClickListener<span style="color: #383a42;">(<span style="color: #a626a4;">new<span style="color: #0f1115;"> <span style="color: #b76b01;">View<span style="color: #383a42;">.<span style="color: #b76b01;">OnClickListener<span style="color: #383a42;">()<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #383a42;">@Override</span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">public<span style="color: #0f1115;"> <span style="color: #a626a4;">void<span style="color: #0f1115;"> <span style="color: #4078f2;">onClick<span style="color: #383a42;">(<span style="color: #b76b01;">View<span style="color: #0f1115;"> v<span style="color: #383a42;">)<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 120px;"><span style="color: #0f1115;"> <span style="color: #4078f2;">calculateMomentum<span style="color: #383a42;">();</span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #383a42;">});</span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">private<span style="color: #0f1115;"> <span style="color: #a626a4;">void<span style="color: #0f1115;"> <span style="color: #4078f2;">calculateMomentum<span style="color: #383a42;">()<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">String<span style="color: #0f1115;"> massStr <span style="color: #4078f2;">=<span style="color: #0f1115;"> editTextMass<span style="color: #383a42;">.<span style="color: #4078f2;">getText<span style="color: #383a42;">().<span style="color: #4078f2;">toString<span style="color: #383a42;">().<span style="color: #4078f2;">trim<span style="color: #383a42;">();</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">String<span style="color: #0f1115;"> velocityStr <span style="color: #4078f2;">=<span style="color: #0f1115;"> editTextVelocity<span style="color: #383a42;">.<span style="color: #4078f2;">getText<span style="color: #383a42;">().<span style="color: #4078f2;">toString<span style="color: #383a42;">().<span style="color: #4078f2;">trim<span style="color: #383a42;">();</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">if<span style="color: #0f1115;"> <span style="color: #383a42;">(<span style="color: #0f1115;">massStr<span style="color: #383a42;">.<span style="color: #4078f2;">isEmpty<span style="color: #383a42;">()<span style="color: #0f1115;"> <span style="color: #4078f2;">||<span style="color: #0f1115;"> velocityStr<span style="color: #383a42;">.<span style="color: #4078f2;">isEmpty<span style="color: #383a42;">())<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">Toast<span style="color: #383a42;">.<span style="color: #4078f2;">makeText<span style="color: #383a42;">(<span style="color: #a626a4;">this<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #50a14f;">&#8220;Заполните все поля&#8221;<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">Toast<span style="color: #383a42;">.<span style="color: #b76b01;">LENGTH_SHORT<span style="color: #383a42;">).<span style="color: #4078f2;">show<span style="color: #383a42;">();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">return<span style="color: #383a42;">;</span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">try<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">double<span style="color: #0f1115;"> mass <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">Double<span style="color: #383a42;">.<span style="color: #4078f2;">parseDouble<span style="color: #383a42;">(<span style="color: #0f1115;">massStr<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">double<span style="color: #0f1115;"> velocity <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">Double<span style="color: #383a42;">.<span style="color: #4078f2;">parseDouble<span style="color: #383a42;">(<span style="color: #0f1115;">velocityStr<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">if<span style="color: #0f1115;"> <span style="color: #383a42;">(<span style="color: #0f1115;">mass <span style="color: #4078f2;">&lt;<span style="color: #0f1115;"> <span style="color: #b76b01;">0<span style="color: #0f1115;"> <span style="color: #4078f2;">||<span style="color: #0f1115;"> velocity <span style="color: #4078f2;">&lt;<span style="color: #0f1115;"> <span style="color: #b76b01;">0<span style="color: #383a42;">)<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 120px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">Toast<span style="color: #383a42;">.<span style="color: #4078f2;">makeText<span style="color: #383a42;">(<span style="color: #a626a4;">this<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #50a14f;">&#8220;Масса и скорость не могут быть отрицательными&#8221;<span style="color: #383a42;">, </span></span></span></span></span></span></span></span></span></span><span style="color: #b76b01;">Toast</span><span style="color: #383a42;">.<span style="color: #b76b01;">LENGTH_SHORT<span style="color: #383a42;">).<span style="color: #4078f2;">show<span style="color: #383a42;">();</span></span></span></span></span></p>
<p style="padding-left: 120px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">return<span style="color: #383a42;">;</span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #a626a4;">double<span style="color: #0f1115;"> momentum <span style="color: #4078f2;">=<span style="color: #0f1115;"> mass <span style="color: #4078f2;">*<span style="color: #0f1115;"> velocity<span style="color: #383a42;">;</span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">String<span style="color: #0f1115;"> resultText <span style="color: #4078f2;">=<span style="color: #0f1115;"> <span style="color: #b76b01;">String<span style="color: #383a42;">.<span style="color: #4078f2;">format<span style="color: #383a42;">(<span style="color: #50a14f;">&#8220;Импульс тела: %.2f кг·м/с&#8221;<span style="color: #383a42;">,<span style="color: #0f1115;"> momentum<span style="color: #383a42;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> textViewResult<span style="color: #383a42;">.<span style="color: #4078f2;">setText<span style="color: #383a42;">(<span style="color: #0f1115;">resultText<span style="color: #383a42;">);</span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}<span style="color: #0f1115;"> <span style="color: #a626a4;">catch<span style="color: #0f1115;"> <span style="color: #383a42;">(<span style="color: #b76b01;">NumberFormatException<span style="color: #0f1115;"> e<span style="color: #383a42;">)<span style="color: #0f1115;"> <span style="color: #383a42;">{</span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #0f1115;"> <span style="color: #b76b01;">Toast<span style="color: #383a42;">.<span style="color: #4078f2;">makeText<span style="color: #383a42;">(<span style="color: #a626a4;">this<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #50a14f;">&#8220;Некорректный формат числа&#8221;<span style="color: #383a42;">,<span style="color: #0f1115;"> <span style="color: #b76b01;">Toast<span style="color: #383a42;">.<span style="color: #b76b01;">LENGTH_SHORT<span style="color: #383a42;">).<span style="color: #4078f2;">show<span style="color: #383a42;">();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p style="padding-left: 30px;"><span style="color: #0f1115;"> <span style="color: #383a42;">}</span></span></p>
<p><span style="color: #383a42;">}</span></p>
<p><strong>Заключение</strong></p>
<p>Разработка клиентского Android-приложения для расчёта импульса тела демонстрирует эффективность использования мобильных технологий в образовательных и инженерных целях. Предложенный алгоритм позволяет создать полнофункциональное приложение с интуитивно понятным интерфейсом и корректной обработкой пользовательского ввода. Простота реализации на языке Java с использованием стандартных библиотек Android SDK делает подобные проекты доступными для студентов, начинающих изучение мобильной разработки. Приложение может быть легко расширено для расчёта других физических величин, что повышает его дидактическую ценность. Таким образом, создание специализированных мобильных калькуляторов остаётся востребованным направлением в области образовательных технологий.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2026/02/104256/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Разработка мобильного приложения «Поиск предметов»</title>
		<link>https://web.snauka.ru/issues/2026/03/104313</link>
		<comments>https://web.snauka.ru/issues/2026/03/104313#comments</comments>
		<pubDate>Fri, 13 Mar 2026 12:33:59 +0000</pubDate>
		<dc:creator>Яковлев Юлиан Юрьевич</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[hidden object game]]></category>
		<category><![CDATA[ImageSprite]]></category>
		<category><![CDATA[low-code]]></category>
		<category><![CDATA[MIT App Inventor]]></category>
		<category><![CDATA[визуальное программирование]]></category>
		<category><![CDATA[жанр «поиск предметов»]]></category>
		<category><![CDATA[мобильная разработка]]></category>
		<category><![CDATA[обучение программированию]]></category>
		<category><![CDATA[педагогика]]></category>
		<category><![CDATA[создание игр]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2026/03/104313</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович Уфимский университет науки и технологий Нефтекамский филиал Кандидат физико-математических наук, преподаватель Современные технологии открывают широкие возможности для быстрого прототипирования и создания мобильных приложений без глубокого знания синтаксиса языков программирования. Платформа MIT App Inventor 2, разработанная Массачусетским технологическим институтом, позволяет любому пользователю, включая детей и педагогов, создавать полноценные приложения для операционной [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><span><em>Научный руководитель: Вильданов Алмаз Нафкатович<br />
</em></span><em>Уфимский университет науки и технологий Нефтекамский филиал<br />
</em><em>Кандидат физико-математических наук, преподаватель</em></p>
<p style="text-align: justify;"><span>Современные технологии открывают широкие возможности для быстрого прототипирования и создания мобильных приложений без глубокого знания синтаксиса языков программирования. Платформа MIT App Inventor 2, разработанная Массачусетским технологическим институтом, позволяет любому пользователю, включая детей и педагогов, создавать полноценные приложения для операционной системы Android с помощью интуитивно понятного визуального интерфейса и блочного программирования.<br />
</span></p>
<p style="text-align: justify;"><span>Игры жанра «Поиск предметов» (Hidden Object) являются отличным выбором для первого проекта. Они развивают внимательность, имеют простую механику и позволяют на практике освоить ключевые концепции разработки: обработку событий (нажатий), работу с графическими объектами (спрайтами) и управление логикой с помощью списков и условий.<br />
</span></p>
<p style="text-align: justify;"><span>Прежде чем приступить к разработке, необходимо определить механику будущей игры. Проект «Поиск предметов» будет функционировать следующим образом: на игровом экране (холсте) расположены несколько графических объектов. В верхней части экрана отображается текстовое задание — название предмета, который требуется найти (рисунок 1). При нажатии на верный объект он исчезает, а задание меняется на следующее. Игра завершается победным уведомлением, когда все предметы найдены.<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2026/03/031326_1229_1.jpg" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 1. Демонстрация игры<br />
</span></p>
<p style="text-align: justify;"><span>Проектирование внешнего вида приложения осуществляется в режиме Designer. Первым делом создаем новый проект, дав ему название, например, GAME. После этого можно приступать к наполнению экрана компонентами.<br />
</span></p>
<p style="text-align: justify;"><span>Сначала загрузим все необходимые изображения. Для этого в правой части экрана, в панели Media, нажимаем кнопку загрузки и выбираем файлы с картинками на нашем компьютере.<br />
</span></p>
<p style="text-align: justify;"><span>Затем из раздела Drawing and Animation перетащим на экран компонент Canvas. Это будет игровое поле. В свойствах холста укажем его ширину и высоту, например, 320 на 505 пикселей, и установим фоновую картинку через пункт BackgroundImage.<br />
</span></p>
<p style="text-align: justify;"><span>Далее добавим на холст компоненты ImageSprite. Их количество должно соответствовать числу предметов, которые предстоит искать. Для каждого спрайта выберем своё изображение в поле Picture, отрегулируем размеры и расположим их в разных местах холста. Очень важно дать каждому спрайту уникальное имя в панели компонентов, например ItemBanana или ItemBook. Это сильно упростит дальнейшее программирование.<br />
</span></p>
<p style="text-align: justify;"><span>Теперь добавим элементы управления. Из раздела User Interface возьмем компонент Label. Он будет показывать игроку, какой предмет нужно найти. Рядом разместим кнопку Button для перезапуска игры. Также добавим компонент Notifier. Он понадобится для вывода сообщения о победе, когда все предметы будут найдены.<br />
</span></p>
<p style="text-align: justify;"><span>Для наглядности ниже на рисунке 2 представлена рабочая область с размещенными компонентами:<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2026/03/031326_1229_2.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 2. Размещение компонентов<br />
</span></p>
<p style="text-align: justify;"><span>Основная работа по созданию механики игры ведется в режиме Blocks, где логика собирается из визуальных блоков-пазлов.<br />
</span></p>
<p style="text-align: justify;"><span>Для хранения списка предметов и отслеживания прогресса создаются две глобальные переменные: Предметы (список) и Индекс (число). При запуске экрана (Screen1.Initialize) список Предметы заполняется именами спрайтов в том виде, как они были названы, а переменная Индекс устанавливается в 1 (рисунок 3). Текст надписи Label устанавливается равным первому элементу списка, указывая игроку цель.<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2026/03/031326_1229_3.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 3. Начальная настройка игры: создание списка предметов и вывод первого задания<br />
</span></p>
<p style="text-align: justify;"><span>Далее переходим к обработке нажатий на спрайты. Для каждого спрайта создается обработчик события Click. Внутри него реализуется проверка: если имя нажатого спрайта совпадает с текущим элементом списка, то есть с элементом под номером Индекс, выполняются следующие действия. Данный спрайт становится невидимым. Переменная Индекс увеличивается на 1. Текст подсказки обновляется на новый элемент списка. Также выполняется проверка на окончание игры. Если Индекс превышает длину списка, срабатывает компонент Notifier с сообщением о победе (рисунок 4).<br />
</span></p>
<p style="text-align: center;"><img src="https://web.snauka.ru/wp-content/uploads/2026/03/031326_1229_4.png" alt="" /><span><br />
</span></p>
<p style="text-align: center;"><span>Рисунок 4. Программирование реакции на правильный выбор<br />
</span></p>
<p style="text-align: justify;"><span>Для кнопки перезапуска создается обработчик клика, который возвращает переменную Индекс к значению 1, делает все спрайты снова видимыми и обновляет текст задания.<br />
</span></p>
<p style="text-align: justify;"><span>Финальным этапом является проверка работоспособности. MIT App Inventor предоставляет удобный инструмент для live-тестирования через приложение MIT AI2 Companion. Достаточно подключиться по QR-коду через меню Connect, и приложение будет работать на смартфоне, мгновенно отражая все изменения в коде.<br />
</span></p>
<p style="text-align: justify;"><span>После завершения отладки через меню Build создается установочный APK-файл, готовый к распространению и установке на любые устройства под управлением Android.<br />
</span></p>
<p style="text-align: left;"><span><strong>Заключение<br />
</strong></span></p>
<p style="text-align: justify;"><span>В ходе работы было создано функционирующее мобильное приложение в жанре «Поиск предметов» с использованием инструмента низкого кода MIT App Inventor 2. Проект продемонстрировал легкость освоения базовых принципов разработки под Android, таких как работа с графикой, управление событиями и структурами данных. Данное руководство может быть использовано в образовательных целях для вовлечения учащихся в мир IT и развития алгоритмического мышления.</span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2026/03/104313/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Разработка Android‑приложения для отображения погоды с использованием Gismeteo и Jsoup</title>
		<link>https://web.snauka.ru/issues/2026/03/104431</link>
		<comments>https://web.snauka.ru/issues/2026/03/104431#comments</comments>
		<pubDate>Tue, 31 Mar 2026 13:31:53 +0000</pubDate>
		<dc:creator>author20348</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[ExecutorService]]></category>
		<category><![CDATA[Gismeteo]]></category>
		<category><![CDATA[Handler]]></category>
		<category><![CDATA[Jsoup]]></category>
		<category><![CDATA[мобильная разработка]]></category>
		<category><![CDATA[парсинг погоды]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2026/03/104431</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал Веб-скрейпинг с использованием библиотеки Jsoup остается высокоактуальной темой для Android-разработчиков, поскольку позволяет автоматизировать сбор данных с веб-сайтов, включая прогнозы погоды, новости и коммерческую информацию. В условиях отсутствия открытых API у многих популярных ресурсов, включая Gismeteo, эта техника становится востребованной в мобильной разработке, аналитике [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;" align="right"><em>Научный руководитель: Вильданов Алмаз Нафкатович</em><br />
<em>к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал</em></p>
<p>Веб-скрейпинг с использованием библиотеки Jsoup остается высокоактуальной темой для Android-разработчиков, поскольку позволяет автоматизировать сбор данных с веб-сайтов, включая прогнозы погоды, новости и коммерческую информацию. В условиях отсутствия открытых API у многих популярных ресурсов, включая Gismeteo, эта техника становится востребованной в мобильной разработке, аналитике и автоматизации задач, где прямой доступ к данным невозможен.</p>
<p>В данной работе выполняется парсинг погоды для Ростова-на-Дону с сайта Gismeteo (рисунок 1) с использованием библиотеки Jsoup для извлечения температуры из HTML-структуры страницы. Для обеспечения корректной работы сетевых запросов применяется ExecutorService, организующий фоновый поток, а обновление пользовательского интерфейса выполняется через Handler. Подобные скрипты востребованы при создании мобильных информеров, особенно для регионов, данные по которым недоступны через официальные API. Стабильность библиотеки Jsoup и встроенных средств многопоточности Android обеспечивает надежность работы приложения в условиях ограниченных ресурсов мобильного устройства.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-104436" title="ris1" src="https://web.snauka.ru/wp-content/uploads/2026/03/ris12.png" alt="" width="516" height="234" /></p>
<p align="center">Рисунок 1. Сайт погоды</p>
<p align="left">Алгоритм решения задачи по созданию Android-приложения для отображения погоды включает следующие последовательные шаги разработки:</p>
<ul>
<li>добавляем разрешение на доступ к интернету в файл AndroidManifest.xml;</li>
<li>подключаем зависимость библиотеки Jsoup в файле build.gradle модуля приложения;</li>
<li>создаём интерфейс с кнопкой для запуска парсинга и текстовым полем для отображения результата;</li>
<li>инициализируем ExecutorService для выполнения сетевого запроса в фоновом потоке;</li>
<li>выполняем подключение к сайту Gismeteo с указанием URL нужного города;</li>
<li>находим элемент с классом &#8220;weather-value&#8221; и извлекаем из него значение температуры;</li>
<li>обрабатываем возможные исключения при сетевом подключении;</li>
<li>используем Handler для обновления TextView с полученными данными в UI-потоке.</li>
</ul>
<p align="left">Ниже приведен фрагмент кода основной логики приложения:</p>
<p style="background: white;"><span><span style="color: #0033b3;">private </span>View<span style="color: #080808;">.</span>OnClickListener <span style="color: #871094;">myOnClick <span style="color: #080808;">= <span style="color: #0033b3;">new </span>View.</span>OnClickListener<span style="color: #080808;">() {</span></span></span></p>
<p style="background: white; padding-left: 30px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;">public void <span style="color: #00627a;">onClick<span style="color: #080808;">(</span>View v<span style="color: #080808;">) {</span></span></span></span></span></span></p>
<p style="background: white; padding-left: 60px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;">ExecutorService executor <span style="color: #080808;">= </span>Executors<span style="color: #080808;">.<em>newSingleThreadExecutor</em>();</span></span></span></span></span></span></p>
<p style="background: white; padding-left: 60px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;">Handler handler <span style="color: #080808;">= <span style="color: #0033b3;">new <span style="color: #080808;">Handler(</span>Looper<span style="color: #080808;">.<em>getMainLooper</em>());</span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 60px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;">executor<span style="color: #080808;">.execute(<span style="color: #0033b3;">new </span>Runnable() {</span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 90px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;">String <span style="color: #871094;">title<span style="color: #080808;">;</span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 90px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;">@Override</span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 90px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;">public void <span style="color: #00627a;">run<span style="color: #080808;">() {</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 120px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><em>//Background work here</em></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 120px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;">try <span style="color: #080808;">{</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;">Document doc <span style="color: #080808;">= </span>Jsoup<span style="color: #080808;">.<em>connect</em>(<span style="color: #067d17;">&#8220;https://www.gismeteo.ru/weather-rostov-na-donu-5110/&#8221;<span style="color: #080808;">).get();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;">Elements ele <span style="color: #080808;">= </span>doc<span style="color: #080808;">.select(<span style="color: #067d17;">&#8220;div[class=weather-value]&#8220;<span style="color: #080808;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;">Element pogoda <span style="color: #080808;">= </span>ele<span style="color: #080808;">.select(<span style="color: #067d17;">&#8220;temperature-value&#8221;<span style="color: #080808;">).first();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;">title <span style="color: #080808;">= </span>pogoda<span style="color: #080808;">.val();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 120px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">} <span style="color: #0033b3;">catch <span style="color: #080808;">(</span>IOException e<span style="color: #080808;">) {</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><em>// e.printStackTrace();</em></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;">title <span style="color: #080808;">= <span style="color: #067d17;">&#8220;error&#8221;<span style="color: #080808;">;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 120px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 120px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #851691;">handler<span style="color: #080808;">.post(<span style="color: #0033b3;">new </span>Runnable() {</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #851691;"><span style="color: #080808;"><span style="color: #9e880d;">@Override</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #851691;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;">public void <span style="color: #00627a;">run<span style="color: #080808;">() {</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 180px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #851691;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><em>//UI Thread work here</em></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 180px;"><span style="color: #871094;">myTextView<span style="color: #080808;">.setText(<span style="color: #067d17;">&#8220;Ростов-на-Дону: &#8221; <span style="color: #080808;">+ <span style="color: #871094;">title<span style="color: #080808;">);</span></span></span></span></span></span></p>
<p style="padding-left: 150px;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">}</span></span></span></span></span></span></p>
<p style="padding-left: 120px;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">});</span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">}</span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">});</span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">}</span></span></span></span></span></span></p>
<p><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">};<br />
</span></span></span></span></span></span></p>
<p style="background: white;"><span style="color: #080808;"><br />
</span></p>
<p>В представленном коде при нажатии на кнопку создается однопоточный ExecutorService, который выполняет сетевой запрос в фоне. Jsoup подключается к странице города, находит элемент с классом &#8220;weather-value&#8221; и извлекает из вложенного тега &#8220;temperature-value&#8221; значение температуры. В случае ошибки (отсутствие интернета, изменение структуры сайта) в переменную title записывается &#8220;error&#8221;. После завершения работы Handler обновляет TextView в главном потоке.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-104437" title="ris2" src="https://web.snauka.ru/wp-content/uploads/2026/03/ris2.png" alt="" width="372" height="173" /></p>
<p align="center">Рисунок 2. Интерфейс разработанного приложения с результатом парсинга</p>
<p style="text-align: left;" align="center"><strong>Заключение</strong><strong> </strong></p>
<p align="left">Разработанное Android-приложение успешно выполняет парсинг данных о погоде с сайта Gismeteo и отображает температуру для указанного города. Использование библиотеки Jsoup в сочетании с ExecutorService и Handler обеспечивает стабильную работу приложения без блокировки пользовательского интерфейса. Предложенный подход может быть адаптирован для парсинга любых данных с веб-страниц, что расширяет возможности мобильных приложений при отсутствии официальных API. Важно помнить об этических аспектах и соблюдении правил robots.txt при разработке подобных решений. Дальнейшее развитие приложения может включать добавление списка городов, автоматическое обновление данных и визуализацию погодных условий.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2026/03/104431/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
