<?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; Google Android</title>
	<atom:link href="http://mobile-developer.ru/category/google-android/feed/" rel="self" type="application/rss+xml" />
	<link>http://mobile-developer.ru</link>
	<description>Программирование для мобильных устройств. Разработка для Windows Mobile, Windows CE, Embedded Linux, Google Android, iPhone, Palm webOS и др. Все о программировании для мобильных телефонов, смартфонов, КПК и других мобильных устройств. Статьи, новости, руководства, видео уроки.</description>
	<lastBuildDate>Sun, 05 Sep 2010 20:40:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Работа с акселерометром в Android</title>
		<link>http://mobile-developer.ru/uncategorized/rabota-s-akselerometrom-v-android-2/</link>
		<comments>http://mobile-developer.ru/uncategorized/rabota-s-akselerometrom-v-android-2/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 20:34:46 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Google Android]]></category>
		<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=1384</guid>
		<description><![CDATA[Для одного из текущих проектов понадобилась поддержка акселерометра. Учитывая то, что еще месяц назад Android API я в глаза не видел, мне казалось что получение данных с акселерометра &#8211; это какой-то адский труд. Оказалось все намного проще. Для работы с различными датчиками в Android используется класс Sensor. Список датчиков можно получить через SensorManager. Например таким [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/uncategorized/rabota-s-akselerometrom-v-android-2/">Работа с акселерометром в Android</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/uncategorized/rabota-s-akselerometrom-v-android-2/&title=Работа+с+акселерометром+в+Android&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Для одного из текущих проектов понадобилась поддержка акселерометра. Учитывая то, что еще месяц назад Android API я в глаза не видел, мне казалось что получение данных с акселерометра &#8211; это какой-то адский труд. Оказалось все намного проще.</p>
<p>Для работы с различными датчиками в Android используется класс <code>Sensor</code>. Список датчиков можно получить через <code>SensorManager</code>. Например таким вот образом при создании <code>Activity </code>можно получить объект <code>Sensor</code>, связанный с акселеромтером:</p>
<pre class="brush: java;">
public class AccelerometerTest extends Activity {

	SensorManager mSensorManager;
	Sensor mAccelerometerSensor;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
        List&lt;Sensor&gt; sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
        if(sensors.size() &gt; 0)
        {
        	for (Sensor sensor : sensors) {
        		switch(sensor.getType())
        		{
        		case Sensor.TYPE_ACCELEROMETER:
        			if(mAccelerometerSensor == null) mAccelerometerSensor = sensor;
        			break;
        		default:
        			break;
        		}
		}
        }
    }
</pre>
<p><span id="more-1384"></span><br />
Для того, чтобы получать данные с акселерометра нам необходимо проделать еще несколько несложных операций:</p>
<ul>
<li>Реализовать интерфейс <code>SensorEventListener</code></li>
<p>, в частности нас интересует метод <code>onSensorChanged()</code></p>
<li>Реализовать метод <code>onResume()</code> где подписать <code>Activity</code> на сообщения от акселеромтера</li>
<li>Реализовать метод <code>onPause()</code> где отписать <code>Activity</code> от сообщений акселерометра</li>
</ul>
<pre class="brush: java;">
public class AccelerometerTest extends Activity implements SensorEventListener {
    @Override
    protected void onPause() {
    	mSensorManager.unregisterListener(this);
    	super.onPause();

    }

    @Override
    protected void onResume() {
    	super.onResume();
    	mSensorManager.registerListener(this, mAccelerometerSensor, SensorManager.SENSOR_DELAY_GAME);
    	mSensorManager.registerListener(this, mMagneticFieldSensor, SensorManager.SENSOR_DELAY_GAME);
    }

	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
	}

	@Override
	public void onSensorChanged(SensorEvent event) {
		float [] values = event.values;
		switch(event.sensor.getType())
		{
		case Sensor.TYPE_ACCELEROMETER:
			{
				// Здесь можно обрабатывать данные от сенсора
			}
			break;
		}
	}
}
</pre>
<p>Простейший пример отображения данных &#8211; отображать их в <code>TextView</code></p>
<pre class="brush: java;">
public class AccelerometerTest extends Activity implements SensorEventListener {
	SensorManager mSensorManager;
	Sensor mAccelerometerSensor;

	TextView mForceValueText;
	TextView mXValueText;
	TextView mYValueText;
	TextView mZValueText;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		...
		mForceValueText = (TextView)findViewById(R.id.value_force);
		mXValueText = (TextView)findViewById(R.id.value_x);
		mYValueText = (TextView)findViewById(R.id.value_y);
		mZValueText = (TextView)findViewById(R.id.value_z);
	}
	...
	@Override
	public void onSensorChanged(SensorEvent event) {
		float [] values = event.values;
		switch(event.sensor.getType())
		{
		case Sensor.TYPE_ACCELEROMETER:
			{
				mXValueText.setText(String.format(&quot;%1.3f&quot;,
					event.values[SensorManager.DATA_X]));
				mYValueText.setText(String.format(&quot;%1.3f&quot;,
					event.values[SensorManager.DATA_Y]));
				mZValueText.setText(String.format(&quot;%1.3f&quot;,
					event.values[SensorManager.DATA_Z]));

				double totalForce = 0.0f;
				totalForce += Math.pow(
					values[SensorManager.DATA_X]/SensorManager.GRAVITY_EARTH, 2.0);
				totalForce += Math.pow(
					values[SensorManager.DATA_Y]/SensorManager.GRAVITY_EARTH, 2.0);
				totalForce += Math.pow(
					values[SensorManager.DATA_Z]/SensorManager.GRAVITY_EARTH, 2.0);
				totalForce = Math.sqrt(totalForce);
				mForceValueText.setText(String.format(&quot;%1.3f&quot;, totalForce));
			}
			break;
		}
	}
}
</pre>
<p><strong>res/layout/main.xml</strong></p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;TableLayout 	android:id=&quot;@+id/TableLayout01&quot;
				android:layout_width=&quot;fill_parent&quot;
				android:layout_height=&quot;fill_parent&quot;
				xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&gt;
	&lt;TableRow 	android:layout_width=&quot;wrap_content&quot;
				android:layout_height=&quot;wrap_content&quot;
				android:id=&quot;@+id/row_force&quot;
				android:layout_margin=&quot;5dip&quot;&gt;
		&lt;TextView 	android:layout_width=&quot;wrap_content&quot;
					android:layout_height=&quot;wrap_content&quot;
					android:id=&quot;@+id/label_force&quot;
					android:text=&quot;Force:&quot;
					android:gravity=&quot;right&quot;&gt;&lt;/TextView&gt;
		&lt;TextView 	android:layout_height=&quot;wrap_content&quot;
					android:layout_width=&quot;fill_parent&quot;
					android:layout_weight=&quot;1&quot;
					android:id=&quot;@+id/value_force&quot;
					android:text=&quot;-&quot;
					android:layout_marginLeft=&quot;5dip&quot;&gt;&lt;/TextView&gt;
	&lt;/TableRow&gt;
	&lt;TableRow 	android:layout_height=&quot;wrap_content&quot;
				android:layout_width=&quot;fill_parent&quot;
				android:id=&quot;@+id/row_x&quot;
				android:layout_margin=&quot;5dip&quot;&gt;
		&lt;TextView 	android:layout_width=&quot;wrap_content&quot;
					android:layout_height=&quot;wrap_content&quot;
					android:text=&quot;X:&quot;
					android:id=&quot;@+id/label_x&quot;
					android:gravity=&quot;right&quot;&gt;&lt;/TextView&gt;
		&lt;TextView	android:layout_height=&quot;wrap_content&quot;
					android:text=&quot;-&quot;
					android:layout_width=&quot;fill_parent&quot;
					android:layout_weight=&quot;1&quot;
					android:id=&quot;@+id/value_x&quot;
					android:layout_marginLeft=&quot;5dip&quot;&gt;&lt;/TextView&gt;
	&lt;/TableRow&gt;
	&lt;TableRow 	android:layout_height=&quot;wrap_content&quot;
				android:layout_width=&quot;fill_parent&quot;
				android:id=&quot;@+id/row_y&quot;
				android:layout_margin=&quot;5dip&quot;&gt;
		&lt;TextView 	android:layout_width=&quot;wrap_content&quot;
					android:layout_height=&quot;wrap_content&quot;
					android:text=&quot;Y:&quot;
					android:id=&quot;@+id/label_y&quot;
					android:gravity=&quot;right&quot;&gt;&lt;/TextView&gt;
		&lt;TextView 	android:layout_height=&quot;wrap_content&quot;
					android:text=&quot;-&quot;
					android:layout_width=&quot;fill_parent&quot;
					android:layout_weight=&quot;1&quot;
					android:id=&quot;@+id/value_y&quot;
					android:layout_marginLeft=&quot;5dip&quot;&gt;&lt;/TextView&gt;
	&lt;/TableRow&gt;
	&lt;TableRow 	android:layout_height=&quot;wrap_content&quot;
				android:layout_width=&quot;fill_parent&quot;
				android:id=&quot;@+id/row_z&quot;
				android:layout_margin=&quot;5dip&quot;&gt;
		&lt;TextView	android:layout_width=&quot;wrap_content&quot;
					android:layout_height=&quot;wrap_content&quot;
					android:text=&quot;Z:&quot;
					android:id=&quot;@+id/label_z&quot;
					android:gravity=&quot;right&quot;&gt;&lt;/TextView&gt;
		&lt;TextView 	android:layout_height=&quot;wrap_content&quot;
					android:text=&quot;-&quot;
					android:layout_width=&quot;fill_parent&quot;
					android:layout_weight=&quot;1&quot;
					android:id=&quot;@+id/value_z&quot;
					android:layout_marginLeft=&quot;5dip&quot;&gt;&lt;/TextView&gt;
	&lt;/TableRow&gt;
&lt;/TableLayout&gt;
</pre>
<p>В результате получим что-то подобное:<br />
<img class="alignnone size-full wp-image-1383" title="Работа с акселерометром в Android" src="http://mobile-developer.ru/wp-content/uploads/2010/09/android-accelerometer-1.png" alt="" width="320" height="480" /><br />
Из примера можно увидеть что в классе <code>SensorManager </code>есть константы <code>DATA_X</code>, <code>DATA_Y</code>, <code>DATA_Z</code>, которые используются в качетсве индексов в массиве значений, возвращаемых акселерометром.<br />
Отображение данных в <code>TextView </code>- это, конечно, неплохо, но не дает общей картины изменений показаний акселерометра при изменении положения телефона. Для того, чтобы увидеть изменение показаний во времени, решил добавить отображение в виде графика.<br />
Для создания графиков набрел на чудесную библиотеку <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://code.google.com/p/achartengine/" >AChartEngine</a></noindex>. Библиотека бесплатная, доступна на Google Code.<br />
Добавляем в layout пару кнопок &#8211; для начала/останова записи показаний акселерометра и для открытия окна с графиком.</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;TableLayout 	android:id=&quot;@+id/TableLayout01&quot;
				android:layout_width=&quot;fill_parent&quot;
				android:layout_height=&quot;fill_parent&quot;
				xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&gt;
...
&lt;TableRow 	android:id=&quot;@+id/TableRow01&quot;
				android:layout_height=&quot;wrap_content&quot;
				android:layout_width=&quot;fill_parent&quot;&gt;
		&lt;ViewStub	android:id=&quot;@+id/ViewStub01&quot;
					android:layout_width=&quot;wrap_content&quot;
					android:layout_height=&quot;wrap_content&quot;&gt;&lt;/ViewStub&gt;
		&lt;LinearLayout 	android:id=&quot;@+id/LinearLayout01&quot;
						android:layout_height=&quot;wrap_content&quot;
						android:layout_width=&quot;fill_parent&quot;
						android:layout_weight=&quot;1&quot;&gt;
			&lt;Button 	android:layout_height=&quot;wrap_content&quot;
						android:layout_weight=&quot;1&quot;
						android:text=&quot;Start recording&quot;
						android:layout_width=&quot;fill_parent&quot;
						android:id=&quot;@+id/button_start&quot;&gt;&lt;/Button&gt;
			&lt;Button 	android:layout_height=&quot;wrap_content&quot;
						android:layout_weight=&quot;1&quot;
						android:text=&quot;Show&quot;
						android:layout_width=&quot;fill_parent&quot;
						android:id=&quot;@+id/button_show&quot;&gt;&lt;/Button&gt;
		&lt;/LinearLayout&gt;
	&lt;/TableRow&gt;
&lt;/TableLayout&gt;
</pre>
<p>В результате этих изменений получаем такой layout:<br />
<img class="alignnone size-full wp-image-1388" src="http://mobile-developer.ru/wp-content/uploads/2010/09/android-accelerometer-2.png" alt="" width="320" height="480" /><br />
Теперь научим <code>Activity </code>реагировать на нажания кнопок:</p>
<pre class="brush: java;">
package com.itdimension.accelerometertest;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import org.achartengine.*;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;

public class AccelerometerTest extends Activity implements SensorEventListener {
	...
	double margins[] = {0, 0};

	Button mStartButton;
	Button mShowButton;

	List&lt;List&lt;Double&gt;&gt; mValues;
	boolean mIsRecording = false;

	OnClickListener mStartButtonListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			mIsRecording = !mIsRecording;
			if(mIsRecording) {
				mValues.get(SensorManager.DATA_X).clear();
				mValues.get(SensorManager.DATA_Y).clear();
				mValues.get(SensorManager.DATA_Z).clear();
				margins[0] = 0;
				margins[1] = 0;
			}
		}
	};

	OnClickListener mShowButtonListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			try
			{
				Intent intent = getChartIntent();
				startActivity(intent);
			}
			catch (Exception e) {
				new AlertDialog.Builder(AccelerometerTest.this)
					.setTitle(&quot;Error&quot;)
					.setMessage(e.getMessage())
					.create()
					.show();
			}

		}
	};

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ...
        mValues = new ArrayList&lt;List&lt;Double&gt;&gt;();
        mValues.add(new ArrayList&lt;Double&gt;());
        mValues.add(new ArrayList&lt;Double&gt;());
        mValues.add(new ArrayList&lt;Double&gt;());
	...
        mStartButton = (Button)findViewById(R.id.button_start);
        mShowButton = (Button)findViewById(R.id.button_show);

        mStartButton.setOnClickListener(mStartButtonListener);
        mShowButton.setOnClickListener(mShowButtonListener);
    }
    ...

	@Override
	public void onSensorChanged(SensorEvent event) {
		float [] values = event.values;
		switch(event.sensor.getType())
		{
		case Sensor.TYPE_ACCELEROMETER:
			{
				if(mIsRecording)
				{
					recordSensorValue(event);
				}
				...
			}
			break;
		}
	}

	private void recordSensorValue(SensorEvent event) {
		double value;
		for(int i = SensorManager.DATA_X; i &lt;= SensorManager.DATA_Z; i++)
		{
			value = (double)event.values[i];
			margins[0] = Math.min(margins[0], value);
			margins[1] = Math.max(margins[1], value);
			mValues.get(i).add(value);
		}
	}

	Intent getChartIntent() {
		int [] colors = new int[] {
		      Color.RED, Color.GREEN, Color.BLUE };
		PointStyle[] styles = new PointStyle[] {
		      PointStyle.POINT, PointStyle.POINT, PointStyle.POINT };
		XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles);
		setChartSettings(renderer, &quot;Sensor Values&quot;, &quot;Index&quot;, &quot;Value&quot;,
	    		0,
	    		mValues.get(SensorManager.DATA_X).size(),
	    		margins[0] * 1.5,
	    		margins[1] * 1.5,
	        	Color.GRAY, Color.LTGRAY);
		return ChartFactory.getLineChartIntent(this, buildDataset(), renderer);
	}

	protected void setChartSettings(XYMultipleSeriesRenderer renderer,
		      String title, String xTitle,
		      String yTitle, double xMin,
		      double xMax, double yMin, double yMax,
		      int axesColor, int labelsColor) {
		    renderer.setChartTitle(title);
		    renderer.setXTitle(xTitle);
		    renderer.setYTitle(yTitle);
		    renderer.setXAxisMin(xMin);
		    renderer.setXAxisMax(xMax);
		    renderer.setYAxisMin(yMin);
		    renderer.setYAxisMax(yMax);
		    renderer.setAxesColor(axesColor);
		    renderer.setLabelsColor(labelsColor);
		  }

	protected XYMultipleSeriesRenderer buildRenderer(int[] colors, PointStyle[] styles) {
	    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
	    int length = colors.length;
	    for (int i = 0; i &lt; length; i++) {
	      XYSeriesRenderer r = new XYSeriesRenderer();
	      r.setColor(colors[i]);
	      r.setPointStyle(styles[i]);
	      renderer.addSeriesRenderer(r);
	    }
	    return renderer;
	  }

	XYMultipleSeriesDataset buildDataset() {
		XYMultipleSeriesDataset result = new XYMultipleSeriesDataset();
		XYSeries xSeries = new XYSeries(&quot;X&quot;);
		XYSeries ySeries = new XYSeries(&quot;Y&quot;);
		XYSeries zSeries = new XYSeries(&quot;Z&quot;);

		int count = mValues.get(SensorManager.DATA_X).size();
		for(int i = 0; i &lt; count; i++)
		{
			xSeries.add(i, mValues.get(SensorManager.DATA_X).get(i));
			ySeries.add(i, mValues.get(SensorManager.DATA_Y).get(i));
			zSeries.add(i, mValues.get(SensorManager.DATA_Z).get(i));
		}

		result.addSeries(xSeries);
		result.addSeries(ySeries);
		result.addSeries(zSeries);

		return result;
	}
}
</pre>
<p>После всех этих манипуляций, при нажатии на кнопку &#8220;Show&#8221; получим приблизительно такой график:<br />
<img class="alignnone size-full wp-image-1389" src="http://mobile-developer.ru/wp-content/uploads/2010/09/android-accelerometer-3.png" alt="" width="320" height="480" /><br />
<img class="alignnone size-full wp-image-1390" src="http://mobile-developer.ru/wp-content/uploads/2010/09/android-accelerometer-4.jpg" alt="" width="240" height="320" /><br />
Ну вот, на этом пока все.<br />
<a href="http://mobile-developer.ru/wp-content/uploads/2010/09/AccelerometerTest.zip" >Скачать исходный код примера можно здесь</a>.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/uncategorized/rabota-s-akselerometrom-v-android-2/" >Работа с акселерометром в Android</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/uncategorized/rabota-s-akselerometrom-v-android-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smaato. Зарабатываем деньги на своем приложении</title>
		<link>http://mobile-developer.ru/google-android/smaato-zarabatyvaem-dengi-na-svoem-prilozhenii/</link>
		<comments>http://mobile-developer.ru/google-android/smaato-zarabatyvaem-dengi-na-svoem-prilozhenii/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 19:05:04 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Google Android]]></category>
		<category><![CDATA[Market]]></category>
		<category><![CDATA[Mobile Ads]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=1304</guid>
		<description><![CDATA[Сегодня у нас еще одна статья о том, как можно заработать на своем мобильном приложении. За статью спасибо Ромео Ордосу. Кто еще не в курсе smaato это компания, специализирующаяся на мобильной рекламе, объединяющая в одну сеть различных поставщиков рекламы, таких как Admod и Quattrowireless. Прицип работы прост: вы создаете свое приложение, внедряете в него рекламу, и [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/smaato-zarabatyvaem-dengi-na-svoem-prilozhenii/">Smaato. Зарабатываем деньги на своем приложении</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/google-android/smaato-zarabatyvaem-dengi-na-svoem-prilozhenii/&title=Smaato.+Зарабатываем+деньги+на+своем+приложении&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Сегодня у нас еще одна статья о том, как можно заработать на своем мобильном приложении. За статью спасибо <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://androidforums.ru/-358.html" >Ромео Ордосу</a></noindex>.</p>
<p>Кто еще не в курсе <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://smaato.com/"  target="_blank">smaato</a></noindex> это компания, специализирующаяся на мобильной рекламе, объединяющая в одну сеть различных поставщиков рекламы, таких как Admod и Quattrowireless. Прицип работы прост: вы создаете свое приложение, внедряете в него рекламу, и зарабатываете на этом деньги. Для разработчиков СНГ это довольно хорошая альтернатива, так как размещать платные приложения на Android Market пока еще нельзя.</p>
<p>В январе 2010 года smaato выпустили SDK для работы с ОС Android. Мне хотелось бы поделиться небольшим опытом работы с smaato. Возможно, кому-то это будет полезно.<br />
<span id="more-1304"></span>Регистрируемся на сайте smaato и добавляем свое приложение. Жмем по ссылке <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/https://my.smaato.com/selfservice/download/SOMA_SDK_for_Android.zip"  target="_blank">&#8220;Install Tools</a></noindex>&#8221; справа от приложения и качаем SOMA SDK for Android. Записываем свои PublisherID (Идентификатор разработчика) и AdspaceID (Идентификатор приложения).</p>
<p>SDK внедряется в приложение очень легко. Всё подробно описано в SDK, поэтому сам процесс описывать не стану. Хочу сразу предупредить о проблеме с которой столкнулся сам: если не активировать приложение на сайте(кнопка status), то реклама появляться не будет, и в логах DDMS появится ошибка об отсутствии параметра devip(IP адрес запрашивающего устройства). Чтобы избежать этого, нужно активировать режим отладки (Описано в документации).</p>
<p>Буквально через пару часов после размещения приложения на маркете, вы уже сможете видеть свою статистику.</p>
<p>Отчет за Январь 2010 для моего приложения <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://androidforums.ru/music-junk-t1856.html"  target="_blank">Music Junk</a></noindex>:</p>
<p style="text-align: center;"><a href="http://mobile-developer.ru/wp-content/uploads/2010/04/smaato-1.png" ><img class="size-full wp-image-1305 aligncenter" title="Smaato" src="http://mobile-developer.ru/wp-content/uploads/2010/04/smaato-1.png" alt="" width="635" height="380" /></a></p>
<p style="text-align: center;"><a href="http://mobile-developer.ru/wp-content/uploads/2010/04/smaato-2.png" ><img class="size-full wp-image-1306 aligncenter" title="Smaato Report" src="http://mobile-developer.ru/wp-content/uploads/2010/04/smaato-2.png" alt="" width="621" height="420" /></a></p>
<p>Количество скачиваний: <strong>49324</strong><br />
Количество активных установок: <strong>33277</strong></p>
<p>Вывод денег происходит в страны СНГ происходит через SWIFT &#8211; переводы. Для этого необходимо открыть в банке счет именно для этих переводов. Оплата производится по истечении 60 дней по окончанию календарного месяца.</p>
<p>Я воспользовался услугами ПриватБанка, так как давно являюсь их клиентом и у них удобная система интернет-банкинга. Карта открывается в USD и моментально, цена: 30 грн(~120 руб). С её помощью можно в любом банкомате проверить баланс, но обналичивать деньги можно только в отделениях банка. Также, воспользовавшись услугой <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.privatbank.ua/html/5_8_1_2r.html"  target="_blank">Приват24</a></noindex> можно легко прослеживать поступления на счет через интернет и даже по SMS. Вместе с картой нужно попросить сделать распечатку реквизитов банка для SWIFT &#8211; переводов. (прим. Есть возможность открыть VISA для этих же переводов. Но это долго и дороже, поэтому у меня на этот счет информации нет). Как мне объяснили, денежные переводы не облагаются никаким налогом, но взимается комиссия в размере 1% от суммы перевода.</p>
<p>Также стоит помнить, что Smaato забирает процент от прибыли(Revenue) себе по такой таблице:<br />
<strong>1 &#8211; 5.000.000</strong> показов: 30% от общей прибыли<br />
<strong>5.000.001 &#8211; 20.000.000</strong> показов: 25% от общей прибыли<br />
<strong>&gt; 20.000.000</strong>: 20% от общей прибыли</p>
<p>На дворе март&#8230; Я захожу на свой аккаунт smaato и вижу следующее:</p>
<p style="text-align: center;"><a href="http://mobile-developer.ru/wp-content/uploads/2010/04/smaato-3.png" ><img class="size-full wp-image-1307 aligncenter" title="Smaato" src="http://mobile-developer.ru/wp-content/uploads/2010/04/smaato-3.png" alt="" width="700" height="147" /></a></p>
<p>Ура! Перехожу по ссылке и попадаю на экран ввода информации о счете:</p>
<p style="text-align: center;"><a href="http://mobile-developer.ru/wp-content/uploads/2010/04/smaato-4.png" ><img class="size-full wp-image-1308 aligncenter" title="Smaato" src="http://mobile-developer.ru/wp-content/uploads/2010/04/smaato-4.png" alt="" /></a></p>
<p>Немного об этих полях:<br />
<strong></strong></p>
<p><strong>Bank Account Information:</strong><br />
<strong>Payment Preference</strong> &#8211; выбираем <strong>International Wire Transfer</strong>. Единственный приемлемый метод для нас;<br />
<strong>Bank Name</strong> &#8211; Имя банка(напр. PRIVATBANK);<br />
<strong>Bank Account</strong> &#8211; номер счета. Он находится в договоре, а не на поверхности выданной карты(!!!);<br />
<strong>Country</strong> &#8211; Страна, где находится банк(напр. Ukraine);<br />
<strong>City</strong> &#8211; Город главного отделения банка(напр. DNEPROPETROVSK);<br />
<strong>Prov/Region</strong> &#8211; Регион, где находится главное отделение банка(напр. DNEPROPETROVSKAYA OBL.);<br />
<strong>SWIFT Code</strong> &#8211; SWIFT код банка(напр. PBANUA2X);<br />
<strong></strong></p>
<p><strong>Beneficiary Address:</strong><br />
<strong>Address 1</strong> &#8211; Адрес проживания(Улица, дом, квартира);<br />
<strong>Country</strong> &#8211; страна проживания;<br />
<strong>City</strong> &#8211; город проживания;<br />
<strong>Prov/Region</strong> &#8211; область или АР;<br />
<strong>ZIP/Postal Code</strong> &#8211; местный индекс;<br />
<strong></strong></p>
<p><strong>Tax Identification:</strong><br />
Выбираем <strong>&#8220;Other Tax ID&#8221;</strong> и вписываем свой ИНН.</p>
<p>По истечении месяца вы получаете выписку по счету:</p>
<p style="text-align: center;"><a href="http://mobile-developer.ru/wp-content/uploads/2010/04/smaato-5.png" ><img class="size-full wp-image-1309 aligncenter" title="Smaato Bill" src="http://mobile-developer.ru/wp-content/uploads/2010/04/smaato-5.png" alt="" width="640" height="480" /></a></p>
<p><strong>Credit Note Total</strong> &#8211; это те деньги, которые вам и должны будут перевести.</p>
<p>15 апреля я получил уведомление о переводе. Как мне объяснил представитель Smaato перевод может занимать и меньшее время, но в марте у них были технические проблемы и поэтому этот процесс занял большее время. За Январь 2010 я получил 750$. Формула по которой рассчитана прибыль: <strong>Net Revenue &#8211; 30% &#8211; 20$.</strong></p>
<p>В итоге, я считаю Smaato неплохим источником прибыли для разработчиков бесплатного мобильного софта, и особенно для тех, у кого нет возможности размещать платные приложения.<br />
<span style="text-decoration: underline;"><strong></strong></span></p>
<p><span style="text-decoration: underline;"><strong>Профит и левелап получены.</strong></span></p>
<p><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://androidforums.ru/smaato-Zarabatyvaem-dengi-na-svoem-prilozhenii-t2218.html"  target="_blank">Оригинал статьи и интересное обсуждение</a></noindex>.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/smaato-zarabatyvaem-dengi-na-svoem-prilozhenii/" >Smaato. Зарабатываем деньги на своем приложении</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/google-android/smaato-zarabatyvaem-dengi-na-svoem-prilozhenii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android GUI PSD v2.0</title>
		<link>http://mobile-developer.ru/google-android/android-gui-psd-v2-0/</link>
		<comments>http://mobile-developer.ru/google-android/android-gui-psd-v2-0/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 11:57:37 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Google Android]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=1247</guid>
		<description><![CDATA[Стала доступна новая редакция PSD файла, содержащая все элементы графического интерфаейса ОС Android. Скачать Android GUI PSD v2.0 с сайта автора Post from: Mobile-Developer.ruAndroid GUI PSD v2.0<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/android-gui-psd-v2-0/">Android GUI PSD v2.0</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/google-android/android-gui-psd-v2-0/&title=Android+GUI+PSD+v2.0&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Стала доступна новая редакция PSD файла, содержащая все элементы графического интерфаейса ОС Android.</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2010/02/android_gui_psd_v2_preview.png" ><img class="alignnone size-full wp-image-1248" title="Android GUI PSD v2.0" src="http://mobile-developer.ru/wp-content/uploads/2010/02/android_gui_psd_v2_preview.png" alt="" width="500" height="569" /></a></p>
<p><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://vgrishin.me/android_gui.html"  target="_blank">Скачать Android GUI PSD v2.0 с сайта автора</a></noindex></p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/android-gui-psd-v2-0/" >Android GUI PSD v2.0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/google-android/android-gui-psd-v2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android SDK для FreeBSD</title>
		<link>http://mobile-developer.ru/google-android/android-sdk-dlya-freebsd/</link>
		<comments>http://mobile-developer.ru/google-android/android-sdk-dlya-freebsd/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 11:30:39 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Google Android]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=1206</guid>
		<description><![CDATA[Сайт BSDroid.org сообщает что Android SDK портирован на FreeBSD. Судя по описанию, доступно SDK для Android Donut и Eclair. На данный момент SDK собирается и работает на FreeBSD 8.0-RC1. Все приложения нативны и не требуют поддержки linux. Также, судя по информации на сайте, есть поддержка языка Simple. Post from: Mobile-Developer.ruAndroid SDK для FreeBSD<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/android-sdk-dlya-freebsd/">Android SDK для FreeBSD</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/google-android/android-sdk-dlya-freebsd/&title=Android+SDK+для+FreeBSD&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p><a href="http://mobile-developer.ru/wp-content/uploads/2010/01/bsdroid.png" ><img class="size-full wp-image-1207 alignright" title="Android SDK for FreeBSD" src="http://mobile-developer.ru/wp-content/uploads/2010/01/bsdroid.png" alt="" width="128" height="128" align="right" /></a>Сайт <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://bsdroid.org"  target="_blank">BSDroid.org</a></noindex> сообщает что Android SDK портирован на FreeBSD.</p>
<p>Судя по описанию, доступно SDK для Android Donut и Eclair. На данный момент SDK собирается и работает на FreeBSD 8.0-RC1. Все приложения нативны и не требуют поддержки linux.</p>
<p>Также, судя по информации на сайте, есть поддержка языка Simple.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/android-sdk-dlya-freebsd/" >Android SDK для FreeBSD</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/google-android/android-sdk-dlya-freebsd/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Вышел Android SDK 2.1</title>
		<link>http://mobile-developer.ru/google-android/vyshel-android-sdk-2-1/</link>
		<comments>http://mobile-developer.ru/google-android/vyshel-android-sdk-2-1/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 19:46:36 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Google Android]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=1199</guid>
		<description><![CDATA[Вышла новая версия инструментария разработки приложений для платформы Android &#8211; Android SDK v2.1. Список нововведений: исправлено много ошибок; добавлен USB-драйвер; появились новые возможности для управления кэшем юзера и системным кэшем; новые геолокационные технологии; новые способы управления видео; новые способы управления графическими технологиями; немного обновлен движок WebKit; добавлены примеры кодов; появились методы для управления интернет-страницами, которые были [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/vyshel-android-sdk-2-1/">Вышел Android SDK 2.1</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/google-android/vyshel-android-sdk-2-1/&title=Вышел+Android+SDK+2.1&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p><a href="http://mobile-developer.ru/wp-content/uploads/2009/07/sdk-large.png" ><img class="alignright size-full wp-image-843" title="Simple Programming Language for Google Android" src="http://mobile-developer.ru/wp-content/uploads/2009/07/sdk-large.png" alt="" width="232" height="172" align="right" /></a>Вышла новая версия инструментария разработки приложений для платформы Android &#8211; Android SDK v2.1.</p>
<p><strong>Список нововведений:</strong></p>
<ul>
<li>исправлено много ошибок;</li>
<li>добавлен <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://developer.android.com/sdk/win-usb.html" >USB-драйвер</a></noindex>;</li>
<li>появились новые возможности для управления кэшем юзера и системным кэшем;</li>
<li>новые геолокационные технологии;</li>
<li>новые способы управления видео;</li>
<li>новые способы управления графическими технологиями;</li>
<li>немного обновлен движок WebKit;</li>
<li>добавлены примеры кодов;</li>
<li>появились методы для управления интернет-страницами, которые были сохранены;</li>
<li>добавлены некоторые функции API (возможность создавать анимированные рисунки для рабочего стола; класс функций, который помогает получать более детальную информацию о сети сотовой связи).</li>
</ul>
<p><strong>Ссылки:</strong></p>
<ul>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://developer.android.com/intl/de/sdk/android-2.1.html" >Полный список нововведений в Android SDK 2.1</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://developer.android.com/intl/de/sdk/index.html"  target="_blank">Скачать Android SDK 2.1</a></noindex></li>
</ul>
<p><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://habrahabr.ru/blogs/android/80590/"  target="_blank">©</a></noindex></p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/vyshel-android-sdk-2-1/" >Вышел Android SDK 2.1</a></p>
<p style="text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-5188470588945412";
/* 468x60 - mobile-developer.ru */
google_ad_slot = "3657023452";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/google-android/vyshel-android-sdk-2-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мой путь в Android Market</title>
		<link>http://mobile-developer.ru/google-android/moj-put-v-android-market/</link>
		<comments>http://mobile-developer.ru/google-android/moj-put-v-android-market/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 00:30:37 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Google Android]]></category>
		<category><![CDATA[Market]]></category>
		<category><![CDATA[Опыт]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=1174</guid>
		<description><![CDATA[Дааа.. тяжелый труд &#8211; копать на поле кукурузу&#8230; В этот раз я расскажу о своем первом опыте разработки коммерческих приложений для Android и о том, как мне, все же, удалось попасть на Android Market (ну не мне лично, а моему приложению, конечно же). Итак&#8230; А началось все давно, а точнее сказать тогда, когда я начал [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/moj-put-v-android-market/">Мой путь в Android Market</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/google-android/moj-put-v-android-market/&title=Мой+путь+в+Android+Market&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Дааа.. тяжелый труд &#8211; копать на поле кукурузу&#8230; В этот раз я расскажу о своем первом опыте разработки коммерческих приложений для Android и о том, как мне, все же, удалось попасть на Android Market (ну не мне лично, а моему приложению, конечно же).</p>
<p>Итак&#8230; А началось все давно, а точнее сказать тогда, когда я начал писать <a href="http://mobile-developer.ru/tag/webos/"  target="_blank">статьи о программировании для Palm WebOS</a>. В ходе написания, собственно, статей, появилась потребность в обучении на каких-то реальных примерах и как раз один из моих знакомых рассказал о том, что запускает сервис файлообмена для мобильных устройств. Файлы планировалось загружать на сервер и отсылать URL загруженного файла по SMS. Такой вот нехитрый способ обмениваться, например, фотографиями с мобильного телефона.<span id="more-1174"></span>К этому моменту уже была готова Web-based версия сервиса и я предложил написать к нему еще и приложение для Palm WebOS. На тот момент мой опыт разработки для Palm WebOS был без малого 8 рабочих дней (я заканчивал 8ю статью из этого цикла, статьи писал по одной в день). Для того, чтобы по-бвстрому слепить приложение для WebOS у меня ушло около 15ти часов. И еще около двух часов чтобы написать PHP-скрипт, который бы использовался для отправки файлов этим приложением и выдавал результаты в формате JSON.</p>
<p>После того, как WebOS версия была закончена, возник вопрос о разработке подобных клиентов для других мобильных платформ. Довльно быстро были сделаны версии для Windows Mobile и Maemo. Версия для Windows Mobile работала как shell extension для Inbox и меню контактов и просто открывала сайт в Internet Explorer c уже заполненным полем получателя. Версия же для Maemo работала аналогично с версией для WebOS &#8211; отсылала файл на сервер и получала JSON-ответ от скрипта ну и дальше по обстоятельствам.</p>
<p>Затем очередь дошла до Android. О да, это еще та эпопея&#8230;</p>
<p>Во-первых, версий Android&#8217;а, доступных и повсеместно используемых на рынке целых три &#8211; 1.5, 1.6, 2.0.</p>
<p>Для всех этих трех версий используется различное API для работы с контактами и то что успешно работает в версии 1.5 совсем отказывается что ли-бо выполнять в версии 2.0. Так же история обстоит и с API для отправки SMS.</p>
<p>Как эти проблемы решались в техническом плане я расскажу в отдельном посте (планирую, по крайней мере). Сейчас же могу сказать только то, что все пришлось делать через Reflection. Криво-косо, но оно работает, к тому же даже вполне вменяемо.</p>
<p>Дальше&#8230; Отправка файлов. Для этой цели пришлось использовать библиотеку httpmime и apache-mime4j с сайта Apace. Хвала Супермарио, но Java-таки кросс-платформенна <img src='http://mobile-developer.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8211; JAR файлы с сайта Apache чудесно заработали и для Android без каких-либо лишних теложвижений.</p>
<p>До того, как сделать все с помощью Reflection, пришлось поддерживать три сборки проекта с различным API для каждой платформы и первые beta-версии приложения тесировались волонтерами с различных форумов как три различных приложения. Но в какойто момент критическая масса жалоб что, все-таки, это не дело, была достигнута и решено было переделать все в виде одной сборки.</p>
<p>На реализацию, тестирование, подготовку, различные доделки-переделки ушло ну&#8230; недели две рабочего времени минимум. Может больше.</p>
<p>Дальше&#8230; Графика. А точнее иконка. Почитав описание Android Application Icon Guidelines я понял что моей мозговой активности явно недостаточно чтобы слепить что-то удобоваримое. И я решил заказать графику (ну вот да, иконку) на фрилансерском сайте, а точнее на free-lance.ru</p>
<p>На самом деле хотелось дешево и сердито, а полоучилось.. ну, не дешево, и даже не сердито. Просто получилось! На проект откликнулось двое фрилансеров. Первый предложил 4000 рублей (не знаю сколько это денег, я в русских тугриках не специалист. Но что-то мне подсказывает что это больше 100 баксов ибо в уме почему-то всплывает цифра 30 &#8211; приблизительно столько просят за одного американского президента). 100 баксов это как-то&#8230; печально, учитывая что разработку я финансирую из своего кармана, а президентов я как бы и не рисую, а зарабатываю трудом праведным (вполне). Второй фрилансер (барышня) предложила слеить мне иконку за 19 баксов. Ок, более менее приемлемо (хотя и не &#8220;за еду&#8221;, как я рассчитывал). К тому же обещано было, что иконка будет сделана за сутки (круть, люблю когда быстро). Я предложил что да, если будет сделана за сутки, то доплачу еще 10% (как по мне, вполне человеческий способ стимулирования. На мелких проектах, конечно, эффект мало заметен, но обычно вполне неплохо работает когда сроки важны).</p>
<p>И о чудо! В три часа ночи иконка сделана! Это прям праздник какой-то! Мне последние два раза очень везет на фрилансеров. Получил я в результате PNG файл 48&#215;48 и EPS-файл с вектором.</p>
<p>Положил я этот PNG файл в папку drawables своего проекта, но фак! Почему-то он не виден на эмуляторе! Как была зеленая с роботом, так и осталась! Детальное изучение проблемы под микроскопом показало что для различных разрешений экрана нужны иконки разного размера (ну и скажите мне, где это написано в гайдлайнах?). После манипуляций с фотошопом, на которые мозговой активности у меня, все же, хватило, были созданы PNG-файл размером 36&#215;36 и 72&#215;72, которые затем перекочевали в нужные папки ресурсов.</p>
<p>Пересобрал и о, да! Иконка в порядке. Можно постить на Android Market!</p>
<p>Но не тут-то было&#8230;</p>
<p>При попытке загрузить сборку Android Market мне объяснил что я не прав и аргументировал это тем, что неймспейс в моем приложении начинается с <strong>com.android</strong>, а так делать нельзя. Странно, почему я это узнаю ПОСЛЕ а не ДО загрузки сборки? Пришлось исправлять&#8230;</p>
<p>Затем мне объяснили что я еще более неправ, потому что я как-то неудачно родился не в США, а в Украине. Для того, чтобы иметь возможность постить платные приложения, нужна учетка в Google Checkout, а зарегистрировать ее можно только (если мне память не изменяет) в 7ми или 8ми странах. Украины, естественно, в списке нет. Ну вот это уже вобще свинство! Я столько работал, чтобы вот так все бросить на пол-пути? Ну уж нет! Индейцы не ищут легких путей! И пошел я&#8230; нет, не нафик, пошел я на сервис <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://slideme.org" title="SlideMe - Альтернатива Android Market"  target="_blank">SlideMe</a></noindex>, который является альтернативой Android Market и также имеет свое приложение-клиент, с помощью которого можно покупать другие приложения.</p>
<p>К счастью, на SlideMe более лояльно относятся к разработчикам из других стран и я довольно быстро завел себе там учетку и разместил приложение. Единственное что меня немного смущает, в описании сервиса они говорят, что для получения выплат надо  будет заполнить кое-какие документы для налоговой США, но это потом. Сейчас же для меня главное то, что приложение приняли и оно доступно для заргузки, а еще больше приятно то, что оно доступно для покупки <img src='http://mobile-developer.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Таки вот оно! <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/https://slideme.org/application/smsmyfile-client" title="SMSMyFile - Отправка файлов по SMS для Android"  target="_blank">SMSMyFile &#8211; отправляем файлы через SMS</a></noindex>!</p>
<p>Порадовал тот факт, что на SlideMe можно не только указать описание приложения, а еще и выложить скриншоты, а главное видео! За 5 минут сварганил видео с помощью CamStudio (бесплатная кстати, я ею и скринкасты все записываю) и выложил на YouTube. Ссылку &#8211; на SlideMe.</p>
<p>Для того, чтобы получать платежи со SlideMe, надо указать как минимум карту, на которую вы будете получать оплату. Здесь мне помогла MasterCard, полученная, в свое время, от RentACoder. Она, в последнее время, меня везде спасает <img src='http://mobile-developer.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Карточку, к тому же, надо верифицировать. У меня пока сделать этого не получилось, пришлось писать в службу поддержки. Вот сутки уже жду ответа&#8230;</p>
<p>Если вы хотите продавать свое приложение с помощью SlideMe, надо сделать некоторые изменения в коде:</p>
<ul>
<li>Добавить JAR-файл в проект (доступен для загрузки на SlideMe)</li>
<li>Добавить Activity в проект (код для вставки доступен там же)</li>
<li>Добавить пару строк в манифест приложения &#8211; зарегистрировать там Activity и пару привелегий для приложения.</li>
</ul>
<p>Более подробно об этом можно узнать <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://slideme.org/slidelock" title="Описание API SlideLock"  target="_blank">здесь</a></noindex>. На внесение изменений у меня ушло 5 минут, что, на самом деле, очень классно.</p>
<p>ОК, со SlideMe закончили. Следующий на очереди <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://andappstore.com" title="AndAppStore - Альтернатива Android Market"  target="_blank">AndAppStore</a></noindex>.</p>
<p><strong>AndAppStore</strong> &#8211; еще одна площадка для продажи Android-приложений. Регистрация там тоже несложная. Получать оплату можно через Google Checkout (будь он неладен) и PayPal.</p>
<p>Все классно, но бесит одно &#8211; процесс подготовки приложения к публикации ну очень муторный&#8230;</p>
<p>Сначала надо создать профайл для приложения на сайте, потом сделать API Key для приложения, получить Application ID, затем сгенерировать какой-то приватный ключ.</p>
<p>При запуске приложения надо получить имя пользователя, затем каким-то хитрым образом раскодировать лицензионный ключ&#8230; в общем все как-то муторно и до конца я со всем еще не разобрался (хотя предлагают скачать демо-приложение и исходники, чейчас как раз в них ковыряюсь, может прозрение наступит). Все как-то сложно, не для плоских умов. В общем, публикация на AndAppStore еще в процессе.</p>
<p>Сервис позволяет указать описание для приложения (чистый текст, без HTML) и загрузить скриншоты. Какие еще плюшки &#8211; будет видно дальше.</p>
<p>Итак, два сервиса нашел, но меня никак не покидало чувство, что с Android Market&#8217;ом я &#8220;что-то делаю не так&#8221;. Пошел еще раз регистрировать приложение&#8230; Повводил значения ао все поля, долго смотрел на форму регистрации и ссылку на Google Checkout&#8230; Затем, все же, пошел на форму регистрации Merchant Account&#8217;а в Google Checkout. На эту форму тоже смотрел долго пока, наконец, меня не осенило&#8230;</p>
<p>А ведь для регистрации не обязательно вводить идентификационный номер налогоплательщика. При указании только номера кредитной карты вас все равно регистрируют, но ежемесячная сумма выплат будет ограничена.</p>
<p>В качетсве адреса указал адрес банка, выдавшего мне карту от RentACoder&#8217;а. Ну и номер самой карты. И о чудо! Зарегистрировался!</p>
<p>Это позволило мне добавить приложение в Android Market. Цену для приложения указал символическую &#8211; $0.99 (а что, все так делают).</p>
<p>Android Market позволяет указать короткое описание приложения (50 символов), обычное описание приложения (300 символов &#8211; мало вобще-то) и загрузить скриншоты. Скриншотов должно быть обязательно два (или вобще ни одного). Еще можно загрузить промо-картинку 180&#215;120.</p>
<p><strong>Итоги</strong></p>
<ul>
<li><strong>Потрачено на регистрацию</strong>: 1 сутки</li>
<li><strong>Зарегистрировался в</strong>: SlideMe, Android Market, AndAppStore</li>
<li><strong>Получилось запостить приложение в</strong>: SlideMe, Android Market</li>
<li><strong>Продаж в SlideMe за первые сутки</strong>: 0</li>
<li><strong>Продаж в Android Market за первые сутки</strong>: 10</li>
<li><strong>Возвратов в Android Market за первые сутки</strong>: 4</li>
<li><strong>Левелап получен</strong>: да <img src='http://mobile-developer.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p><strong>Приложение</strong></p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/12/smsmyfile-1.0.0-screenshot.png" ><img class="alignnone size-full wp-image-1175" title="smsmyfile-1.0.0-screenshot" src="http://mobile-developer.ru/wp-content/uploads/2009/12/smsmyfile-1.0.0-screenshot.png" alt="smsmyfile-1.0.0-screenshot" /></a></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="505" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"></p><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/CNFZ3efSYYA&amp;hl=ru_RU&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="505" src="http://www.youtube.com/v/CNFZ3efSYYA&amp;hl=ru_RU&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/moj-put-v-android-market/" >Мой путь в Android Market</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/google-android/moj-put-v-android-market/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Больше половины разработчиков для Android недовольны своими доходами</title>
		<link>http://mobile-developer.ru/google-android/bolshe-poloviny-razrabotchikov-dlya-android-nedovolny-svoimi-doxodami/</link>
		<comments>http://mobile-developer.ru/google-android/bolshe-poloviny-razrabotchikov-dlya-android-nedovolny-svoimi-doxodami/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 00:09:44 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Google Android]]></category>
		<category><![CDATA[Market]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=1133</guid>
		<description><![CDATA[Разработчиков мобильных приложений для платформы Google Android не устраивает работа онлайнового магазина приложений Android Market, говорится в исследовании аналитиков Skyhook Wireless, которые в октябре опросили 30 разрабочиков приложений под Android. 57% не устраивает получаемый доход. 90% сообщили, что число загрузок их приложений не превышает 10000. 43% считают, что «Google Checkout» тормозит продажи приложений и требуют [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/bolshe-poloviny-razrabotchikov-dlya-android-nedovolny-svoimi-doxodami/">Больше половины разработчиков для Android недовольны своими доходами</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/google-android/bolshe-poloviny-razrabotchikov-dlya-android-nedovolny-svoimi-doxodami/&title=Больше+половины+разработчиков+для+Android+недовольны+своими+доходами&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Разработчиков мобильных приложений для платформы Google Android не  устраивает работа онлайнового магазина приложений <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.android.com/market/" >Android Market</a></noindex>, говорится в  исследовании аналитиков <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.skyhookwireless.com/press/skyhookDecreport.php" >Skyhook  Wireless</a></noindex>, которые в октябре опросили 30 разрабочиков приложений под  Android.</p>
<ul>
<li>57% не устраивает получаемый доход.</li>
<li>90% сообщили, что число загрузок их приложений не превышает 10000.</li>
<li>43% считают, что «Google Checkout» тормозит продажи приложений и  требуют упрощения системы платежей.</li>
<li>82% не устраивает дизайн <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.android.com/market/" >Android  Market</a></noindex>, так как он усложняет поиск старых и заметность новых  приложений.</li>
<li>46% уверены, что разнообразие версий Android на выпускаемых  устройствах существенно усложнит разработку, по причине проблем  совместимости.</li>
</ul>
<p>Ну и самое печальное для Android Market: 68% разработчиков  сомневаются в целесообразности развития и поддержке своих  Android-приложений.<br />
<noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.locationrevolution.com/stats/SkyhookDevelopersSurveyDec2009.pdf" >pdf-версия  исследования</a></noindex></p>
<p>За новость спасибо хабрапользователю <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://devd.habrahabr.ru/"  target="_blank">Devd</a></noindex>.<noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://habrahabr.ru/blogs/android/77109/" > ©</a></noindex></p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/bolshe-poloviny-razrabotchikov-dlya-android-nedovolny-svoimi-doxodami/" >Больше половины разработчиков для Android недовольны своими доходами</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/google-android/bolshe-poloviny-razrabotchikov-dlya-android-nedovolny-svoimi-doxodami/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Иконки для Android-приложений. Бесплатно!</title>
		<link>http://mobile-developer.ru/google-android/ikonki-dlya-android-prilozhenij-besplatno/</link>
		<comments>http://mobile-developer.ru/google-android/ikonki-dlya-android-prilozhenij-besplatno/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 19:57:58 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Google Android]]></category>
		<category><![CDATA[Artwork]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=1106</guid>
		<description><![CDATA[Появился набор бесплатных иконок, доступных для коммерческого и некоммерческого использования в Android-приложениях. В комплетке 30 иконок + исходники в EPS-формате. Скачать иконки можно здесь. Post from: Mobile-Developer.ruИконки для Android-приложений. Бесплатно!<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/ikonki-dlya-android-prilozhenij-besplatno/">Иконки для Android-приложений. Бесплатно!</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/google-android/ikonki-dlya-android-prilozhenij-besplatno/&title=Иконки+для+Android-приложений.+Бесплатно!&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Появился набор бесплатных иконок, доступных для коммерческого и некоммерческого использования в Android-приложениях. В комплетке 30 иконок + исходники в EPS-формате.</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/11/icon-preview.png" ><img class="alignnone size-full wp-image-1108" title="30 free icons for Android developers" src="http://mobile-developer.ru/wp-content/uploads/2009/11/icon-preview.png" alt="30 free icons for Android developers" width="664" height="272" /></a></p>
<p><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.androidicons.com/" title="Android Icons for Free! Download Now!"  target="_blank">Скачать иконки можно здесь</a></noindex>.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/ikonki-dlya-android-prilozhenij-besplatno/" >Иконки для Android-приложений. Бесплатно!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/google-android/ikonki-dlya-android-prilozhenij-besplatno/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Анонсирована поддержка Android Platform 2.0 в Android SDK</title>
		<link>http://mobile-developer.ru/google-android/anonsirovana-podderzhka-android-platform-2-0-v-android-sdk/</link>
		<comments>http://mobile-developer.ru/google-android/anonsirovana-podderzhka-android-platform-2-0-v-android-sdk/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 20:43:32 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Google Android]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=1096</guid>
		<description><![CDATA[И вот, долгожданная новость. Google fнонсировала поддержку Android 2.0 в средствах разработки Android SDK. Добавлены новые API &#8211; программный интерфейс для синхронизации, работа с Bluetooth 2.0 и еще куча всякого. Теперь Android-приложения позволяют пользователям более простым способом общаться. Для этого в Android 2.0 есть Quick Contact API. Приложения могут поддерживать peer-2-peer соединения по Bluetooth, что [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/anonsirovana-podderzhka-android-platform-2-0-v-android-sdk/">Анонсирована поддержка Android Platform 2.0 в Android SDK</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/google-android/anonsirovana-podderzhka-android-platform-2-0-v-android-sdk/&title=Анонсирована+поддержка+Android+Platform+2.0+в+Android+SDK&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p><a href="http://mobile-developer.ru/wp-content/uploads/2009/10/eclair.png" ><img class="alignnone size-full wp-image-1097" title="Android Eclair" src="http://mobile-developer.ru/wp-content/uploads/2009/10/eclair.png" alt="Android Eclair" width="200" height="185" align="right" /></a>И вот, долгожданная новость. Google fнонсировала поддержку Android 2.0 в средствах разработки Android SDK. Добавлены новые API &#8211; программный интерфейс для синхронизации, работа с Bluetooth 2.0 и еще куча всякого. Теперь Android-приложения позволяют пользователям более простым способом общаться. Для этого в Android 2.0 есть Quick Contact API. Приложения могут поддерживать peer-2-peer соединения по Bluetooth, что может быть очень полезно в играх.</p>
<ul>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://developer.android.com/sdk/android-2.0-highlights.html"  target="_blank">Ознакомиться с полным списком нововведений в Android Platform 2.0</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://developer.android.com/sdk/index.html"  target="_blank">Скачать последнюю версию Android SDK можно здесь</a></noindex>.</li>
</ul>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/anonsirovana-podderzhka-android-platform-2-0-v-android-sdk/" >Анонсирована поддержка Android Platform 2.0 в Android SDK</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/google-android/anonsirovana-podderzhka-android-platform-2-0-v-android-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вышел Android Native Developer Kit (NDK) 1.6</title>
		<link>http://mobile-developer.ru/google-android/vyshel-android-native-developer-kit-ndk-1-6/</link>
		<comments>http://mobile-developer.ru/google-android/vyshel-android-native-developer-kit-ndk-1-6/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 22:50:15 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Google Android]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=1013</guid>
		<description><![CDATA[Вышла новая версия средств разработки, которые позволяют вставлять native-код в Android-приложения. Нововведения: Возможность использовать OpenGL ES Возможность работы с Android 1.5 и 1.6 Возможность размещать native-исходники в папке с Java-проектом Много исправлений в скриптах Ссылки Что такое Android NDK и зачем это нужно Скачать Android NDK 1.6 Post from: Mobile-Developer.ruВышел Android Native Developer Kit (NDK) [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/vyshel-android-native-developer-kit-ndk-1-6/">Вышел Android Native Developer Kit (NDK) 1.6</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/google-android/vyshel-android-native-developer-kit-ndk-1-6/&title=Вышел+Android+Native+Developer+Kit+(NDK)+1.6&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Вышла новая версия средств разработки, которые позволяют вставлять native-код в Android-приложения.</p>
<p><strong>Нововведения:</strong></p>
<ul>
<li>Возможность использовать OpenGL ES</li>
<li>Возможность работы с Android 1.5 и 1.6</li>
<li>Возможность размещать native-исходники в папке с Java-проектом</li>
<li>Много исправлений в скриптах</li>
</ul>
<p><strong>Ссылки</strong></p>
<ul>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://developer.android.com/sdk/ndk/1.6_r1/index.html#overview"  target="_blank">Что такое Android NDK и зачем это нужно</a></noindex></li>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://developer.android.com/sdk/ndk/1.6_r1/index.html"  target="_blank">Скачать Android NDK 1.6</a></noindex></li>
</ul>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/google-android/vyshel-android-native-developer-kit-ndk-1-6/" >Вышел Android Native Developer Kit (NDK) 1.6</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/google-android/vyshel-android-native-developer-kit-ndk-1-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
