Разработка приложений для Android. Простой бот на WebKit. Тестировалось на Samsung Galaxy Y S5360

May 31, 2013 18:25

Начался мой путь в данном направлении не так давно.

Накрылась моя старенькая Nokia N72.

Выпил пива (и не только), вырубился, перед этим, вероятнее всего, разлил на себя тоже пиво ну и телефон отказался работать.

Вообще, телефонов у меня было много. Думаю что не у меня одного. Вот только покупал я себе самые простые. В первую очередь это для меня средство связи. Иногда нужен интернет. Почту, например, прочитать. Ну и все. Плюс долго они у меня не задерживаются. То разобью, то потеряю, то промочу. Если дал за телефон несколько сотен гривен, то не так обидно его терять, если бы дал за него несколько тысяч.

Тот, что купил тоже не очень дорогой (чуть больше 1000 гривен в магазине). Это, наверное, один из самых дешевых, учитывая эго возможности. Запихнули туда все, что можно, хотя и с минимальными параметрами.

Фото Samsung Galaxy Y S5360 (оригинальное 4800 x 1800 px):




Обзор Samsung Galaxy Y S5360

В общем, пост не о моих телефонах и не о моем последнем приобретении. Так как я программист, первым делом после покупки и настройки девайса пошел в гугл искать информацию о программировании для Android.


До этого имел опыт программирования под Symbian OS 9.1 стоявшую на моей Nokia N73. Я, хоть и фанат C++, дальше Hello World не пошел. Пришлось осваивать Java. Так как это внук или правнук C++, особых проблем с освоением не возникло. И так на свет появилось несколько уровней «Klotski» под Symbian OS. Сделал примерно за день и это вместе с освоением неизвестного мне языка и системы.

Кстати о Nokia N73: покупал я его очень давно стоял он тогда где-то 3500 гривен, ну и одним прекрасным вечером я снова немного перебрал. Мимо проезжали стражи порядка, увидев меня решили остановиться и поболтать о том о сем. Из-за моей неадекватности, конструктивного диалога не получилось и было решено прокатить меня на машине к ближайшему упорному пункту. Перед тем как ехать один из них попросил у меня телефон, чтобы позвонить. Больше я телефон не видел. Покупался он конечно за не малые деньги, но радует то, что я им пользовался много лет ну и что его цена за это время существенно упала. Та и состояние у него было не на пять с плюсом.

Вернемся к сути поста, а именно к Android OS.

В первую очередь понадобится среда разработки. Я, конечно, очень привык к Visual Studio та и есть в сети статьи по теме разработки приложений для Android в ней. Пишут, что вроде как можно писать на Java, C++ и даже на C#. Я особо не вникал в тему, поэтому не знаю, что и где качать, каким образом это все настраивать и использовать. В общем, решил послушать совета гугла который рекомендует использовать Eclipse с плагином Android Development Tools (ADT).

Перед тем как ставить среду необходимо поставить Java SDK (JDK). Скачать можно здесь. После загрузки и установки можно ставить и среду. Можно ставить все по отдельности: Eclipse, Android SDK, Android Development Tools (ADT) но зачем нам лишняя трата времени на настройку, если гугл предлагает скачать все это вместе? Качать от сюда. Для загрузки гугл предлагает обычный архив, без установочного пакета, поэтому после скачивания просто извлеките содержимое в какую-то папку в корень диска, например «C:\android». Если положить куда-то глубже будут проблемы. Особенно если в пути будут пробелы или русские символы.

Запустите SDK Manager. Вы увидите список компонентов, которые можно загрузить через интернет. В колонке «Status» указано, установлен компонент или нет и есть ли для него обновление.

В идеале нужно установить все флажки и нажать на кнопку «Install package» и тем самым загрузить и установить все существующие компоненты. Учтите, что это займет очень много времени, так как качать придется не один гигабайт информации. Если у вас быстрый интернет и нет ограничений в трафике тогда все норм, в противном случае я бы рекомендовал вам обновить установленные компоненты и установить платформу, для которой вы собираетесь компилировать программы. Я выбрал Android 2.2 (API 8). Для установки только платформы без примеров и дополнительных API необходимо установить флажок «SDK Platform».

После загрузки и установки необходимых вам компонентов нужно создать Android Virtual Device (AVD), эмулятор смартфонов с которым будет работать Eclipse. Запускаем среду, открываем меню «Window» и выбираем пункт «Android Virtual Deviсe Manager». В появившемся диалоге на вкладке «Android Virtual Deviсe» нажимаем кнопку «New» после чего появится еще один диалог. В поле «AVD Name» вводим имя устройства на ваше усмотрение. Оно может состоять из произвольного набора символов. В выпадающем списке «Deviсe» выбираем желаемое устройство. Основное их отличие это размер экрана. Честно говоря, не знаю, чем они еще отличаются. В списке «Target» можно выбрать одну из установленных платформ. Еще можно установить размер «SD Card», например, 512 MiB. После чего жмем кнопку «Ok» и закрываем диалог «Android Virtual Deviсe Manager».

Теперь можно создавать приложения и тестировать на своем компьютере. Согласитесь, что подключать устройство для каждого тестового запуска программы менее удобно. Да и не у всех есть такое устройство. Кстати, перед релизом все-таки нужно будет протестировать программу на устройстве, так как тесты в эмуляторе и непосредственно на конечном устройстве естественно имеют существенные отличия. К примеру, в эмуляторе вы не сможете в полной мере протестировать обработку сенсорного управления.

Во время первых запусков проекта созданного мастером у меня появлялись различные ошибки. Лечил гуглением. Так что если будут ошибки, просто переписываем сообщение об ошибке в строку поиска гугл и переходим по какому-то результату. В основном решение находится сразу.

Так как основная моя специализация это написание различных ботов было решено написать для Android простой бот. Думаю что большинству извесно что Android построен на Linux, а браузер эго на WebKit который и будет использоватся программой в качестве движка. Программа будет иметь кнопку, текстовое поле и пространство для отображения страниц. После ввода в текстовое поле поискового запроса и нажатия на кнопку программа перейдет на Яндекс затем с помощью JavaScript введет поисковую фразу и отправит форму для поиска. Приступ.

Нажимаем «File» > «New» > «Android Application Project» откроется мастер создания проекта.

Application name - это название программы, которое будет отображаться в списке программ на смартфоне.
Project Name - имя проекта, которое будет отображаться в списке проектов в Eclipse
Package name - префикс для классов проекта. Я использую com.zmax.androidbot. после первой точки название фирмы (если ее нет, можете написать, к примеру, свой ник). После второй точки название проекта.
Minimum Required SDK - минимальная версия Android на которой будет работать программа.
Target SDK - максимальная версия Android на которой тестируется приложение.
Compile With - возможности какой версии будут доступны программе.
Везде выбираем Android 2.2 (Froyo). В общем, то что вы скачали.
Theme - выбираем None.

Жмем Next.

Оставляем два флажка: Create Activity и Create Project in Workspace.

Так как на следующих диалогах ничего менять не нужно, можно сразу нажимать Finish. Проект успешно создан.

Теперь необходимо добавить элементы управления. Это можно сделать в визуальном редакторе или за счет редактирования activity_main.xml. Нужно написать следующее:

xmlns:android="httр://schemas.android.com/apk/res/android"
   xmlns:tools="httр://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity" >

android:id="@+id/editText1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_alignParentTop="true"
       android:ems="10"
       android:text=""ZMax Home Industry"" />

android:id="@+id/button1"
       style="?android:attr/buttonStyleSmall"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBaseline="@+id/editText1"
       android:layout_alignBottom="@+id/editText1"
       android:layout_alignParentRight="true"
       android:layout_marginRight="17dp"
       android:text="Search" />

android:id="@+id/webView1"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_alignLeft="@+id/editText1"
       android:layout_below="@+id/editText1"
       android:layout_marginTop="18dp" />

А теперь можно немного покодить. В MainActivity.java в метод onCreate нужно дописать:

findViewById( R.id.button1 ).setOnClickListener( new OnClickListener() {
   @Override public void onClick(View v) {
       final WebView webView = (WebView) findViewById( R.id.webView1 );
       webView.getSettings().setJavaScriptEnabled(true);
       webView.setWebViewClient( new WebViewClient() {
           @Override public void onPageFinished( WebView view, String url ) {
               String strSearch = ((TextView)findViewById( R.id.editText1 )).getText().toString();
               String strScript =
                       "javascript:" +
                       "inputText=document.getElementById('query');" +
                       "inputText.value='" + strSearch + "';" +
                       "inputText.form.submit();";
               webView.loadUrl( strScript );
           }
       });
       webView.loadUrl("httр://www.yandex.ru/m/");
   }
});

С помощью метода setOnClickListener устанавливаем обработчик нажатия на кнопку. Переопределяем метод onClick. Берем WebView и с помощью метода setJavaScriptEnabled включаем JavaScript. Устанавливаем WebViewClient и переопределяем метод onPageFinished который вызывается после загрузки страницы. В нутрии него формируем скрипт и выполняем его с помощью loadUrl. Далее по коду идет еще один loadUrl который и загрузит Яндекс.

В AndroidManifest.xml нужно дописать:

android:name="android.permission.INTERNET" />
   ...

Это для того чтобы система дала программе права на доступ в интернет.

Ну, вот и все! Программа готова для запуска в эмуляторе или на устройстве с Android 2.2 либо выше.

Вот так выглядит в эмуляторе, после загрузки Яндекса и выполнения скрипта



Проект положил в архив. Качать тут. В папке «bin» есть откомпилированная программа готовая для установки на устройство.

Так как это мой первый проект под Android, та и один из первых на Java, код и программа довольно таки сыроваты. Не знаю почему, сначала программа у меня не работала. Переходила на Яндекс но не вводила запрос. Как мне кажется, особых изменений в код я не вносил, но в один прекрасный момент она заработала. Еще один глюк: если изменить положение телефона, страница исчезает с экрана. Также хз, от чего и почему.

Ну, в общем, система меня заинтересовала. Думаю над каким-то серьезным проектом. Если сделаю программу или узнаю что-то интересное о Android, тогда напишу пост.

samsung, java, mysoft, android

Previous post Next post
Up