<?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>CTAPbIu_MABP&#039;s BLOG &#187; android</title>
	<atom:link href="http://mabp.kiev.ua/tag/android/feed/" rel="self" type="application/rss+xml" />
	<link>http://mabp.kiev.ua</link>
	<description>энтузиазм = 1/опыт © Старый Мавр</description>
	<lastBuildDate>Thu, 26 Jan 2012 10:34:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Android SDK 2.2</title>
		<link>http://mabp.kiev.ua/2010/10/08/android-sdk-2-2/</link>
		<comments>http://mabp.kiev.ua/2010/10/08/android-sdk-2-2/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 13:21:37 +0000</pubDate>
		<dc:creator>CTAPbIu_MABP</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://mabp.kiev.ua/?p=1269</guid>
		<description><![CDATA[Последний раз я работал с Android еще когда версия SDK была 1,6. А теперь вот решил обновить впечатления и хочу вам сказать что все очень понравилось :) Я пока не успел ничего написать, ни запустить старый проект, но уже есть комментарий. Для использования нового профиля телефона надо, что бы путь к нему содержал только латинские [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mabp.kiev.ua/2009/09/16/androids-modal-dialogs-example/">Последний раз</a> я работал с <a href="http://mabp.kiev.ua/tag/android/">Android</a> еще когда версия SDK была 1,6. А теперь вот решил обновить впечатления и хочу вам сказать что все очень понравилось :)</p>
<span id="more-1269"></span>
<p>Я пока не успел ничего написать, ни запустить старый проект, но уже есть комментарий. Для использования нового профиля телефона надо, что бы путь к нему содержал  только латинские буквы. По умолчанию профили телефонов создаются в папке пользователя, так что если вас зовут "Администратор" то создавать профиль нужно такой командой</p>
<pre><code class="bat">
android create avd -n my_profile_name -t 1 -p f:\path\to\profiles 
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://mabp.kiev.ua/2010/10/08/android-sdk-2-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример модальных диалогов для Android</title>
		<link>http://mabp.kiev.ua/2009/09/16/androids-modal-dialogs-example/</link>
		<comments>http://mabp.kiev.ua/2009/09/16/androids-modal-dialogs-example/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 20:56:17 +0000</pubDate>
		<dc:creator>CTAPbIu_MABP</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Modal Dialog]]></category>
		<category><![CDATA[pbank]]></category>
		<category><![CDATA[progress bar]]></category>

		<guid isPermaLink="false">http://mabp.kiev.ua/?p=1121</guid>
		<description><![CDATA[Здравствуйте, дорогие слушатели, сегодня в нашем подкасте вы узнаете о том как создать красивый стандартный индикатор загрузки в своем приложении... Ой, а что, никто не записывает?! Ну, ладно... тогда проговаривайте (можно про себя) текст и думайте что это подкаст. И нет, я не курил, просто настроение хорошее. В общем решил показать массам как выглядит код [...]]]></description>
			<content:encoded><![CDATA[<p>Здравствуйте, дорогие слушатели, сегодня в нашем подкасте вы узнаете о том как создать <s>красивый</s> стандартный индикатор загрузки в своем приложении... Ой, а что, никто не записывает?! Ну, ладно... тогда проговаривайте (можно про себя) текст и думайте что это подкаст. </p>
<span id="more-1121"></span>
<p style="color:white;">И нет, я не курил, просто настроение хорошее.</p>
<p>В общем решил показать массам как выглядит код моего <a href="http://mabp.kiev.ua/2009/09/05/pbank/">e-banking'a</a>. Но что-то меня берёт жадность (нету духа опенсорса) показывать именно код приложения, поэтому я тут по-быстрому сговнял классик, который показывает на экране кнопку при нажатии на которую вылазит алерт с вопросом да/нет, при нажатии на "да" вылазит прогрессбар и потом пропадает а при нажатии на "нет" - ничего не происходит.</p>

<p>Кстати, я уже скачал себе новую SDK 1.6. Так что можете сравнить вид эмуляторов. Ну и раз уж я заговорил о ней то надо сказать что наличие новых методов для работы с CDMA, я не оценил, зато заметил что починили <a href="http://mabp.kiev.ua/2009/09/14/android-first-bugs/">баг c URLConnection</a>, а это не может не радовать :).</p>

<pre><code class="java">
package ua.kiev.mabp;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

import java.util.Random;

public class MyActivity extends Activity {

    // список диалогов
    private static final int CONFIRM = 1;
    private static final int PROGRESS = 2;

    // счетчик вызовов
    private int counter;

    /**
     * Метод вызывается один раз при создании активности
     *
     * @param savedInstanceState предыдущее состояние активности
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Создаем кнопку
        Button button = new Button(this);
        button.setText("click me!");
        // вешаем на неё листенер
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // котрый покажет диалог CONFIRM
                showDialog(CONFIRM);
            }
        });
        // сетим кнопку в основной лайаут
        setContentView(button, new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT));
    }

    /**
     * Метод вызывается один раз на каждый диалог
     *
     * @param id номер диалога онисан в начале класса
     * @return диалог
     */
    @Override
    protected Dialog onCreateDialog(int id) {
        super.onCreateDialog(id);
        switch (id) {
            case CONFIRM:
                // новый лайаут для диалога
                LinearLayout confirmView = new LinearLayout(this);

                // создаем диалог с параметрами и двумя кнопками
                return new AlertDialog.Builder(MyActivity.this)
                        .setIcon(android.R.drawable.ic_dialog_info)
                        .setView(confirmView)
                        .setTitle("Title")
                        .setMessage("Message")
                        // положительная кнопка с листенером который показывает диалог PROGRESS
                        .setPositiveButton("Click me!", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                // запустит новый диалог загрузки
                                showDialog(PROGRESS);
                                // в новом потоке
                                new Thread(new Runnable() {
                                    public void run() {
                                        // запустит фоновую процедуру
                                        wasteMyTime();
                                        // по завершении которой в основном потоке
                                        MyActivity.this.runOnUiThread(new Runnable() {
                                            public void run() {
                                                // диплог загрузки закроется
                                                dismissDialog(PROGRESS);
                                            }
                                        });
                                    }
                                }).start();
                            }
                        })
                        // отрицатильная кнопка просто скроет диалог
                        .setNegativeButton("Cancel", null)
                        .create();
            case PROGRESS:
                // Диалог загрузки
                ProgressDialog dialog = new ProgressDialog(this);
                dialog.setTitle("Please, waite...");
                dialog.setMessage("Dummy message about loading...");
                // без процентов
                dialog.setIndeterminate(true);
                // можно закрыть кнопкой телефона
                dialog.setCancelable(true);
                return dialog;
            default:
                return null;
        }
    }

    /**
     * Метод вызывается каждый раз перед появлением диалога
     *
     * @param id     номер появляющегося диалога
     * @param dialog сам диалог
     */
    @Override
    protected void onPrepareDialog(int id, Dialog dialog) {
        super.onPrepareDialog(id, dialog);
        switch (id) {
            case CONFIRM:
                ((AlertDialog) dialog).setMessage("Этот диалог был вызван " + (++counter) + " раз");
                break;
            default:
                break;
        }
    }

    /**
     * Метод просто тратит время
     */
    public static void wasteMyTime() {
        Random random = new Random();
        for (int i = 0; i &lt; 10000; i++) {
            random.nextGaussian();
        }
    }
}

</code></pre>

<p>Вот так это выглядит в новом красивом но не очень удобном (я уже привык к прошлому) эмуляторе.</p>
<div style="text-align:center"><img src="/content/img/pbank/dialog.jpg" alt="modal dialog example"/></div>]]></content:encoded>
			<wfw:commentRss>http://mabp.kiev.ua/2009/09/16/androids-modal-dialogs-example/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Android: первые грабли</title>
		<link>http://mabp.kiev.ua/2009/09/14/android-first-bugs/</link>
		<comments>http://mabp.kiev.ua/2009/09/14/android-first-bugs/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 17:24:59 +0000</pubDate>
		<dc:creator>CTAPbIu_MABP</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[pbank]]></category>

		<guid isPermaLink="false">http://mabp.kiev.ua/?p=1119</guid>
		<description><![CDATA[На русском очень мало документации по андроиду поэтому я немного попишу на эту тему. Как вы уже знаете взялся я настругать на коленке e-banking. Первых два дня дико тупил и читал доки. На самом деле все интуитивно просто как в Убунте ;) Но как и везде есть грабли. Об одних я и хочу тут написать. [...]]]></description>
			<content:encoded><![CDATA[<p>На русском очень мало документации по андроиду поэтому я немного попишу на эту тему.</p>

<p>Как вы уже знаете взялся я настругать на коленке <a href="http://mabp.kiev.ua/2009/09/05/pbank/">e-banking</a>. Первых два дня дико тупил и читал доки. На самом деле все интуитивно просто как в Убунте ;) Но как и везде есть грабли. Об одних я и хочу тут написать.</p>
<span id="more-1119"></span>
<p>Для работы приложению надо по HTTPS связываться с сервером и получать xml. Для соединения я выбрал самый простой способ и использовал объект URLConnection</p>

<pre><code class="java">
URL url = new URL("https://liqpay.com/?do=api_xml");
URLConnection conn = url.openConnection();
</code></pre>

<p>Все было хорошо пока я не начал отлаживать второй проход по сценарию, то есть первый раз перевели денег и снова возвращаемся на исходную страницу для второго перевода. Тут началв вылазить ошибка "Приложение выполнило недопустимую операцию и будет закрыто", или как-то так.</p>

<p>Я сначала подумал ошибка где-то в потоках, потому что я первый раз использовал потоки вообще. Стал смотреть вроде с потоками все ок. Посмотрел может я не закрыл прошлое соединение, оно закрывается после закрытия потока. В результате добрался до того что поток изначально получается закрытым. И никакого null-pointer или другого исключения не вываливается.</p>

<p>Долго ли коротко ли гуглил и нашел что не у одного меня такая проблема. Воркэраунд был простой, открывается каждое нечетное соединение то есть 1,3,5... Но это естественно не дело. Стал искать как делают реальные пацаны. а реальные пацаны оказывается использую класс DefaultHttpClient с которым все ок. Вот сейчас проделал пару тестов все действительно нормально пашет, собираюсь внести изменения в проект. А пока побалую вас рабочим кодом, мож кому пригодится.</p>

<pre><code class="java">
String xmlContentToSend = "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;&lt;request&gt;&lt;/request&gt;";

DefaultHttpClient httpClient = new DefaultHttpClient();
// some weird header
// http://doookstechstuff.blogspot.com/2009/06/switching-off-expect-100-continue.html
httpClient.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
// Using POST or    new HttpGet
HttpPost httpPost = new HttpPost("https://liqpay.com/?do=api_xml");
// some headers 
httpPost.addHeader("Accept", "text/xml");
httpPost.addHeader("Content-Type", "application/xml");

try {
    // convert xml to StringEntity
    StringEntity entity = new StringEntity(xmlContentToSend, HTTP.UTF_8);
    entity.setContentType("application/xml");
    httpPost.setEntity(entity);

    // or use NameValuePair 
    /*
    List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();
    params.add(new BasicNameValuePair("name", "value"));
    httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
    */

    // execute is a blocking call, it's best to call this code in a thread separate from the ui's
    HttpResponse response = httpClient.execute(httpPost);

    InputStream stream = response.getEntity().getContent();
}
catch (Exception ex) {
    // logging
}
</code></pre>

]]></content:encoded>
			<wfw:commentRss>http://mabp.kiev.ua/2009/09/14/android-first-bugs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PBank: передача денег</title>
		<link>http://mabp.kiev.ua/2009/09/12/pbank-money-sending/</link>
		<comments>http://mabp.kiev.ua/2009/09/12/pbank-money-sending/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 13:34:53 +0000</pubDate>
		<dc:creator>CTAPbIu_MABP</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[pbank]]></category>

		<guid isPermaLink="false">http://mabp.kiev.ua/?p=1117</guid>
		<description><![CDATA[Я еще в четверг обещал выложить свежие скриншоты, но доделал только сегодня. Это было связано с ошибками в API и с какими-то невнятными косяками в Android'e. О первом я уже писал а о втором еще напишу. Итак вот что у меня получилось: Пока писал все это поднял кучу экспириенса, на самом деле все очень просто [...]]]></description>
			<content:encoded><![CDATA[<p>Я еще в четверг обещал выложить свежие скриншоты, но доделал только сегодня. Это было связано с ошибками в <a href="https://liqpay.com/?do=pages&#038;p=api" rel="nofollow external">API</a> и с какими-то невнятными косяками в Android'e. О первом я <a href="http://mabp.kiev.ua/2009/09/11/banks-mistakes/">уже писал</a> а о втором еще напишу. Итак вот что у меня получилось:</p>
<span id="more-1117"></span>
<div style="text-align:center"><img src="/content/img/pbank/send.jpg" alt="отправка денег"></div>
<p>Пока писал все это поднял кучу экспириенса, на самом деле все очень просто и большинство проблем возникает только потому что нету некоторых пакетов из стандартного JDK. Я думаю можно просуммировать на что ушло больше всего времени.</p>
<ul>
<li>Настройка соединения через прокси не увенчалась успехом вообще, так же как и настройка эмулятора. То есть с работы я так и не сделал ни одной транзакции, рисовал только интерфейс. Кто знает как настроить сие чудо, милости прошу в каменты.</li>
<li>С дуру очень много времени ушло на отпечаток SHA1, ну не додумался я что там нужна кодировка 8859_1, ну бывает.</li>
<li>Еще много времени ушло на поиск того как из org.w3c.dom.Document сделать java.lang.String. В Android SDK не включен нужный пакет поэтому в конце концов пришлось писать свой метод.</li>
<li>И сегодня долго искал ответа на вопрос почему же нельзя открыть два https соединения подряд через URLConnection. Второе почему-то не открывается и не бросает эксепшн. А третье снова открывается.</li>
<li>И еще самое главное но еще не тронутое: надо найти как хранить структуры данных, либо сериализировать и хранить в файлах либо в sqlite3 вобщем надо думать.</li>
</ul>
<p>Не думайте что я остановлюсь на достигнутом у меня в планах реализация хранения и просмотра выполненных транзакций, полное переписывание баланса (соответственно полученных с тех пор знаний) и тюнинг тока что написанной отправки денег.</p>

]]></content:encoded>
			<wfw:commentRss>http://mabp.kiev.ua/2009/09/12/pbank-money-sending/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android - первые шаги</title>
		<link>http://mabp.kiev.ua/2009/09/07/android-first-steps/</link>
		<comments>http://mabp.kiev.ua/2009/09/07/android-first-steps/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 12:00:30 +0000</pubDate>
		<dc:creator>CTAPbIu_MABP</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://mabp.kiev.ua/?p=1292</guid>
		<description><![CDATA[Перепост с форума, да еще и задним числом (через год). Кто видел кто нет, а я на выходных наваял вот такую штуку. Подробностей конкретно этой программы не будет а в общих чертах расскажу. Создаем новый проект и получаем дерево папок и пару файлов \ + AndroidManifest.xml \gen\ua\kiev\mabp + R.java \res\layout + main.xml \res\drawable + icon.png [...]]]></description>
			<content:encoded><![CDATA[<p>Перепост с <a href="http://pyha.ru/forum/topic/3371.0" rel="nofollow external">форума</a>, да еще и задним числом (через год).</p>

<span id="more-1292"></span>

<p>Кто видел кто нет, а я на выходных наваял вот такую <a href="http://mabp.kiev.ua/2009/09/05/pbank/">штуку</a>.</p>


<p>Подробностей конкретно этой программы не будет а в общих чертах расскажу.</p>

<p>Создаем новый проект и получаем дерево папок и пару файлов</p>

<blockquote>
\
+ AndroidManifest.xml
\gen\ua\kiev\mabp
+ R.java
\res\layout
+ main.xml
\res\drawable
+ icon.png
\res\values
+ strings.xml
\src\ua\kiev\mabp
+ MyActivity.java
</blockquote>

<p>Поехали по порядку</p>
<p><strong>AndroidManifest.xml</strong> - дескриптор развертывания, тоже самое что web.xml для J2 Enterprise Edition , для тех кто не в курсе андроид использует J2 Micro Edition (upd уже давно нет)</p>

<p>Структура фала</p>
<pre><code class="xml">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ua.kiev.mabp"&gt;
    &lt;application android:icon="@drawable/icon" android:label="tests"&gt;
        &lt;activity android:name="MyActivity" android:label="PBank"&gt;
            &lt;intent-filter&gt;
                &lt;action android:name="android.intent.action.MAIN"/&gt;
                &lt;category android:name="android.intent.category.LAUNCHER"/&gt;
            &lt;/intent-filter&gt;
        &lt;/activity&gt;
    &lt;/application&gt;
    &lt;uses-permission android:name="android.permission.INTERNET"&gt;&lt;/uses-permission&gt;
&lt;/manifest&gt;
</code></pre>

<ul>
<li>package="ua.kiev.mabp" - пакет приложения</li>
<li>android:label="tests" - название приложения</li>
<li>android:name="MyActivity" - запускаймая активность (может быть несколько)</li>
<li>android:label="PBank" - заголовок активности</li>
<li>android:name="android.intent.action.MAIN" - главная активность приложения</li>
<li>android:name="android.intent.category.LAUNCHER" - может запускатся из менюшки</li>
<li>android:name="android.permission.INTERNET" - приложение может выходить в интернет (есть разные разрешения например на получение SMS или доступ к SD)</li>
</ul>

<p><strong>R.java</strong> Генерируемый файл, руками его править бесполезно потому что он перезаписывается при каждой компиляции
Файл содержит класс R(esources) в котором хранятся ссылки на все ресурсы, более подробно чуть ниже</p>

<p>В папке <strong>res</strong> содержит ресурсы нескольких типов, все они при компиляции сохраняются в класс R, папка разделена на ресурсы разного типа<p>
<ul>
<li>drawable - картинки</li>
<li>layout - слои</li>
<li>values - переменные</li>
<li><a href="http://lampwww.epfl.ch/~linuxsoft/android/android-m3-rc20a/docs/reference/available-resources.html" rel="nofollow external">есть еще (доки)</a></li>
</ul>

<p>Думаю про картинки объяснять не надо. единственно что доступ к ним происходит вот так - R.drawable.image_name_without_extention</p>

<p><strong>main.xml</strong> Слои хранят в себе разметку страниц по умолчанию</p>

<pre><code class="xml">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"&gt;

    &lt;ListView
 	android:id="@id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
 	android:drawSelectorOnTop="false"/&gt;
&lt;/LinearLayout&gt;
</code></pre>


<p>Все начинается с определения LinearLayout</p>
<ul>
<li>android:orientation="vertical" - вертикальное положение (как альбомная страница)</li>
<li>android:layout_width="fill_parent" - заполняет весь экран в ширину</li>
<li>android:layout_height="fill_parent" - заполняет весь экран в высоту</li>
</ul>

<p>Основной экран содержит список ListView</p>
<ul>
<li>android:id="@id/android:list" - список доступен в ресурсах через ID R.id.list</li>
<li>android:layout_width="fill_parent" - заполняет родительский объект по ширене</li>
<li>android:layout_height="wrap_content" - имеет высоту содержимого</li>
<li>android:drawSelectorOnTop="false" - первый элемент списка не подсвечен</li>
</ul>


<p>еще пример <strong>row.xml</strong></p>
<pre><code class="xml">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/vw1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"&gt;    

    &lt;ImageView android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/&gt;

    &lt;LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"&gt;

        &lt;TextView android:id="@+id/text"
            android:textSize="12sp"
            android:textStyle="bold"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/&gt;

    &lt;/LinearLayout&gt;
&lt;/LinearLayout&gt;
</code></pre>
<p>это ряд с списке</p>

<p><strong>strings.xml</strong> Хранит в себе локализацию. 
если создать папку values-ru то из нее будет браться русская локаль</p>

<p>пример файла</p>
<pre><code class="xml">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;resources&gt;
    &lt;string name="first"&gt;Первая строка&lt;/string&gt;
    &lt;string name="second"&gt;Вторая строка&lt;/string&gt;
&lt;/resources&gt;
</code></pre>

<p>Cтроки доступны через объект ресурсов R.string.first или через слои android:text="@string/first". Чтобы преобразовать ресурс в локализированную строку делаем так context.getString(R.string.first)</p>

<p>переходим к приложению <strong>MyActivity.java</strong></p>

<p>пример класса</p>
<pre><code class="java">
public class ResourceExplorer extends ListActivity{ 

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // список который сождержит информацию
        List&lt;Map&lt;String, Object&gt;&gt; resourceNames = new ArrayList&lt;Map&lt;String, Object&gt;&gt;();

        // Объект рядя
        Map&lt;String, Object&gt; data;

        // захардкодженые номеря взятые отсюда
        // http://code.google.com/android/reference/android/R.drawable.html
        for ( int idx = 17301504; idx &lt;= 17301655; idx++ ){
            data = new HashMap&lt;String, Object&gt;();

            try {
                String stg = Resources.getSystem().getResourceName(idx);
                data.put("text", stg );
                data.put("img", idx );
                resourceNames.add(data);
            }

            catch (Resources.NotFoundException e) {
                // игнорируем
            }
        }

        SimpleAdapter notes = new SimpleAdapter(
            this,
            resourceNames,
            R.layout.row,
            new String[] { "text", "img" },
            new int[] { R.id.text, R.id.img } );

        setListAdapter(notes);
    }
}
</code></pre>

<p>В результате получаем приложение которое отображает все картинки которые по умолчанию есть в эмуляторе</p>

<img src="http://mabp.kiev.ua/content/img/android_images.png" alt=""/>


<p>this is android, have a fun :)</p>]]></content:encoded>
			<wfw:commentRss>http://mabp.kiev.ua/2009/09/07/android-first-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PBank</title>
		<link>http://mabp.kiev.ua/2009/09/05/pbank/</link>
		<comments>http://mabp.kiev.ua/2009/09/05/pbank/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 19:00:09 +0000</pubDate>
		<dc:creator>CTAPbIu_MABP</dc:creator>
				<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[hate]]></category>
		<category><![CDATA[pbank]]></category>

		<guid isPermaLink="false">http://mabp.kiev.ua/?p=1108</guid>
		<description><![CDATA[Несмотря на то что я люто-бешено ненавижу Приват Банк за их бюрократию и прочую хуйню многократно описаную на просторах интернета, я тут взялся написать одно приложение для них. Ну не дял них а для себя, ну не для себя а на продажу... но взялся написать и пишу. Смысл вот в чем: на прошлой недели появилось [...]]]></description>
			<content:encoded><![CDATA[<p>Несмотря на то что я люто-бешено ненавижу Приват Банк за их бюрократию и прочую хуйню многократно описаную на просторах <a href="http://google.com" rel="nofollow external">интернета</a>, я тут взялся написать одно приложение для них.</p>
<span id="more-1108"></span>
<p>Ну не дял них а для себя, ну не для себя а на продажу... но взялся написать и пишу. Смысл вот в чем: на прошлой недели появилось вот такое забавное <a href="https://liqpay.com/">API</a>. По сути обычный клент-банк, ничего особенного. Единственное что появилось оно только на прошлой недели! Этим я и решил воспользоватся. У них есть родное приложение для iPhone, а я решил написать приложение для Android'a. С одной стороны реальный опыт писания под телефон с другой может даже что-то заработаю. В результате двух дней работы моё приложение умеет показывать главную менюшку, имеет настройку мерчанта, и может показывать баланс. Пока все но это еще даже на альфу не претендует.</p>
<p>Вот пара скриншотов для затравки.</p>
<div style="text-align:center"><img src="/content/img/pbank/main.jpg" alt="Главное меню" /></div>
<div style="text-align:center"><img src="/content/img/pbank/preference.jpg" alt="Настройки мерчанта" /></div>
<div style="text-align:center"><img src="/content/img/pbank/balance.jpg" alt="Баланс" /></div>]]></content:encoded>
			<wfw:commentRss>http://mabp.kiev.ua/2009/09/05/pbank/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Реклама T-Mobile G1</title>
		<link>http://mabp.kiev.ua/2009/03/17/advertising-t-mobile-g1/</link>
		<comments>http://mabp.kiev.ua/2009/03/17/advertising-t-mobile-g1/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 19:31:19 +0000</pubDate>
		<dc:creator>CTAPbIu_MABP</dc:creator>
				<category><![CDATA[Видео]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[advertisement]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://mabp.kiev.ua/?p=867</guid>
		<description><![CDATA[Хочу себе такой телефон аж ноги кипятком обжог!]]></description>
			<content:encoded><![CDATA[<p>Хочу себе такой телефон аж ноги кипятком обжог!</p>

<div style="text-align:center"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/-KY9B9Yzug0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=ru&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/-KY9B9Yzug0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=ru&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://mabp.kiev.ua/2009/03/17/advertising-t-mobile-g1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Install: Setup Android project in Eclipse</title>
		<link>http://mabp.kiev.ua/2009/03/17/install-setup-android-project-in-eclipse/</link>
		<comments>http://mabp.kiev.ua/2009/03/17/install-setup-android-project-in-eclipse/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 22:50:50 +0000</pubDate>
		<dc:creator>CTAPbIu_MABP</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[install]]></category>

		<guid isPermaLink="false">http://mabp.kiev.ua/?p=849</guid>
		<description><![CDATA[На работе настолько нехрен делать, что поставил себе Eclipse и Android SDK, Java JDK у меня уже стояла. И вот хочу по горячим следам выложить урезанный перевод официального мануала с комментариями руководство по установке все этого барахла. Сначала я написал все это как одну статью но потом решил разделить на несколько чтобы можно было легко [...]]]></description>
			<content:encoded><![CDATA[<p>На работе настолько нехрен делать, что поставил себе <a href="http://mabp.kiev.ua/2009/03/17/install-eclipse/">Eclipse</a> и <a href="http://mabp.kiev.ua/2009/03/17/install-android-sdk/">Android SDK</a>, <a href="http://mabp.kiev.ua/2009/03/17/install-java-jdk/">Java JDK</a> у меня уже стояла. И вот хочу по горячим следам выложить <del>урезанный перевод официального мануала с комментариями</del> руководство по установке все этого барахла. Сначала я написал все это как одну статью но потом решил разделить на несколько чтобы можно было легко давать ссылки, поэтому про установку вы почитаете по ссылкам ввержу а про конфигурацию ниже.</p>
<span id="more-849"></span>

<h4>Конфигирация Eclipse</h4>
<p>Подключаю ADT Plugin. Настраиваю прокси, захожу в Window->Preference->General->Network Connection и заполняю форму.</p>
<div style="text-align:center"><img src="/content/img/install/android_project/preference_1.jpg" width="600" height="530" alt="Preference"/></div>
<p>Потом захожу в Help->Software Update->Available Software</p>
<div style="text-align:center"><img src="/content/img/install/android_project/repository_1.jpg" width="600" height="407" alt="Repository"/></div>
<p>И при помощи кнопки Add Site добавляю адрес репозитория Google</p>
<div style="text-align:center"><img src="/content/img/install/android_project/add_repository.jpg" width="489" height="171" alt="Add Repository"/></div>
<p>Из добавленного репозитория устанавливаю Android Developer Tools и Android Editors</p>
<div style="text-align:center"><img src="/content/img/install/android_project/repository_2.jpg" width="600" height="407" alt="Repository"/></div>
<div style="text-align:center"><img src="/content/img/install/android_project/installing_tools.jpg" width="600" height="340" alt="Installing Tools"/></div>
<div style="text-align:center"><img src="/content/img/install/android_project/accepting_license_agreement.jpg" width="600" height="340" alt="Accepting License Agreement"/></div>
<p>Подключаю Android SDK...</p>
<p>Захожу в Window->Preference->Android и указываю путь куда скопировал файлы SDK</p>
<div style="text-align:center"><img src="/content/img/install/android_project/preference_1.jpg" width="600" height="530" alt="Preference"/></div>

<h4>Создание нового проекта</h4>
<p>Все установил и подключил, осталось создать проект.</p>
<div style="text-align:center"><img src="/content/img/install/android_project/project_1.jpg" width="525" height="500" alt="Project"/></div>
<p>Нажимаю пиктограмму "проект" и выбираю Android</p>
<div style="text-align:center"><img src="/content/img/install/android_project/project_2.jpg" width="525" height="500" alt="Project"/></div>
<p>Заполняю все поля и нажимаю Finish</p>
<div style="text-align:center"><img src="/content/img/install/android_project/eclipse_work_space.jpg" width="600" height="450" alt="Eclipse"/></div>
<p>Так выглядит готовый проект, теперь надо его запустить.</p>
<div style="text-align:center"><img src="/content/img/install/android_project/configuration.jpg" width="600" height="480" alt="Configuration"/></div>
<p>Захожу в Run->Run Configuration выбираю проект, нажимаю Apply и Run.</p>

<h4>Запуcк</h4>
<div style="text-align:center"><img src="/content/img/install/android_project/phone.jpg" width="600" height="500" alt="Phone"/></div>
<p>Получается вот такое приложение в эмуляторе...</p>
<p>О том как и что можно написать на этом эмуляторе я думаю рассказать в ближайшем будущем.</p>]]></content:encoded>
			<wfw:commentRss>http://mabp.kiev.ua/2009/03/17/install-setup-android-project-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

