tag:blogger.com,1999:blog-27531545705657489922024-03-13T08:27:14.862-07:00//TODO Blog nameoyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.comBlogger31125tag:blogger.com,1999:blog-2753154570565748992.post-31694264749526807462015-07-06T08:30:00.005-07:002015-07-06T08:31:12.535-07:00Library as aar file<u>CREATING AAR</u><br />
in build.gradle of the library:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span style="background-color: white;">apply plugin: 'com.android.library'</span></span><br />
<div style="background-color: white;">
<span style="font-family: inherit;"><br />aar can be found in <span style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; font-size: 15px; line-height: 19.5px; margin: 0px; padding: 0px;">build/outputs/aar/</span><span style="font-size: 15px; line-height: 19.5px;"> </span></span></div>
<pre style="background-color: white; font-family: Menlo;"><span style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px; line-height: 19.5px;">
</span></pre>
<pre style="background-color: white; font-family: Menlo;"><span style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px; line-height: 19.5px;"><u>USE</u></span></pre>
<pre style="background-color: white; font-family: Menlo;"><span style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px; line-height: 19.5px;">in build.gradle of the project:</span></pre>
<pre><pre class="default prettyprint prettyprinted" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: #393318; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; margin: 0px; padding: 0px; white-space: inherit;"><span style="background-color: white; font-family: Courier New, Courier, monospace;"><span class="pln" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">repositories </span><span class="pun" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">{</span><span class="pln" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">
flatDir </span><span class="pun" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">{</span><span class="pln" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">
dirs </span><span class="str" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: maroon; margin: 0px; padding: 0px;">'libs'</span><span class="pln" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="pun" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">}</span><span class="pln" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="pun" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">}</span><span class="pln" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">
dependencies </span><span class="pun" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">{</span><span class="pln" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">
compile</span><span class="pun" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">(</span><span class="pln" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">name</span><span class="pun" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">:</span><span class="str" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: maroon; margin: 0px; padding: 0px;">'cards'</span><span class="pun" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">,</span><span class="pln" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;"> ext</span><span class="pun" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">:</span><span class="str" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: maroon; margin: 0px; padding: 0px;">'aar'</span><span class="pun" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">)</span><span class="pln" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">
</span><span class="pun" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: black; margin: 0px; padding: 0px;">}</span></span></code></pre>
</pre>
oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-20294461536270073632015-07-06T07:41:00.000-07:002015-07-06T07:41:04.410-07:00Do-not-forget proguard settingshttp://proguard.sourceforge.net/manual/examples.html#stacktrace:<br />
<pre style="background: rgb(224, 224, 224); padding: 10px;">-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable</pre>
oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-58189518011278559782015-05-22T07:53:00.000-07:002015-06-02T08:29:04.531-07:00Android app stress testing. Monkey.http://developer.android.com/tools/help/monkey.html<br />
You'll need an emulator or an ADB-connected device.<br />
It's a command line utility. To start it:<br />
<br />
$ /Users/Username/Library/Android/sdk/platform-tools/adb shell<br />
<br />
Start pushing events (an example for 500 events):<br />
monkey -p your.package.name -v 500<br />
<br />
Enjoy your phone's life:)<br />
<div>
<br /></div>
oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-17327509119575655642015-05-22T02:13:00.001-07:002015-05-25T03:03:13.705-07:00Android SDK location on OS XDefault path is /Users/username<username><username>/Library/Android/sdk</username></username><br />
<br />
You can change it via File -> Project structure -> SDK Location in Android Studiooyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-70440115677266480512014-09-15T07:01:00.002-07:002014-09-15T07:01:38.570-07:00Library projects cannot include raw assets<div style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
The tools do not support the use of raw asset files (saved in the assets/ directory) in a library project. Any asset resources used by an application must be stored in the assets/ directory of the application project itself. However, resource files saved in the res/ directory are supported.</div>
<div style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
И никаких шрифтов в assets библиотек больше!</div>
<div style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 1em; padding: 0px; vertical-align: baseline;">
<br /></div>
oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-40546062551410069662014-08-21T03:17:00.000-07:002014-08-21T03:17:38.428-07:00XML shapes in Android LThis would work in pre-L android:<br />
<br />
<br />
<shape p="" xmlns:android="http://schemas.android.com/apk/res/android"> android:shape="rectangle" ><br />
<br />
<solid p=""> android:angle="270"<br />
android:color="@color/orange" /><br />
<br />
<corners p=""> android:bottomLeftRadius="5dp"<br />
android:bottomRightRadius="5dp"<br />
android:topLeftRadius="5dp"<br />
android:topRightRadius="5dp" /><br />
<br />
</corners></solid></shape><br />
<br />
<br />
But in Android L you would see... nothing. To fix it you should always use selectors. You'd get the result this way:<br />
<br />
<br />
<selector xmlns:android="http://schemas.android.com/apk/res/android"></selector><br />
<br />
<item><shape android:shape="rectangle"></shape></item><br />
<solid android:angle="270" android:color="@color/orange"></solid><br />
<br />
<corners android:bottomleftradius="5dp" android:bottomrightradius="5dp" android:topleftradius="5dp" android:toprightradius="5dp"></corners><br />
<br />
<br />
oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-86995526568514989582014-07-29T05:30:00.000-07:002014-07-29T05:30:17.512-07:00Decoding AndroidManifest of an apk archive1. Get apktool + helper script for your OS https://code.google.com/p/android-apktool/downloads/list<br />
2. Put them + apk file together to the directory<br />
3. Print<br />
apktool d MyApp.apk ./MyApp<br />
<br />
<br />
Thanks http://stackoverflow.com/questions/4191762/how-to-view-androidmanifest-xml-from-apk-file<br />
<br />
<br />oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-39931596638692653372013-09-11T09:05:00.000-07:002013-09-11T09:05:02.529-07:00Задолбался перезагружать телефон?<ul style="background-color: white; border: 0px; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; list-style-image: initial; list-style-position: initial; margin: 0px 0px 1em 30px; padding: 0px; vertical-align: baseline;">
<li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">open console/terminal and navigating to /platform-tools</li>
<li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">type "adb shell" or on linux/mac "./adb shell"</li>
<li style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">in the shell type "am broadcast -a android.intent.action.BOOT_COMPLETED" or whatever action you want to fire</li>
</ul>
<div>
<span style="font-family: Arial, Liberation Sans, DejaVu Sans, sans-serif;"><span style="font-size: 14px; line-height: 18px;"><br /></span></span></div>
<div>
<span style="font-family: Arial, Liberation Sans, DejaVu Sans, sans-serif;"><span style="font-size: 14px; line-height: 18px;">Спасибо </span></span><a href="http://stackoverflow.com/questions/5051687/broadcastreceiver-not-receiving-boot-completed?rq=1">http://stackoverflow.com/questions/5051687/broadcastreceiver-not-receiving-boot-completed?rq=1</a></div>
oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-47995558973972100272012-10-16T02:16:00.003-07:002012-10-16T02:16:41.953-07:00Вызов диалога вне UI-треда<br />
на самом деле, внутри, конечно:)<br />
<br />
<br />
Thread startMap = new Thread(new Runnable() {<br />
@Override<br />
public void run() {<br />
GameAuthActivity.this.runOnUiThread(new Runnable() {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@Override<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>public void run() {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>showDialog(START_ARMY_DIALOG);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> });<br />
}<br />
}<br />
};<br />
oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-87912037042101089382012-06-06T08:00:00.002-07:002012-06-06T08:00:37.565-07:00Хозяйке на заметку: при использовании 9patches класть их в background, но НЕ в src (иначе будут тянуться как обычные картинки)oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-63524541072408955632012-04-19T05:50:00.004-07:002012-04-19T05:54:32.309-07:00proguard - retrace obfuscated stacktraces\android-sdk-windows\tools\proguard\bin\proguardgui.bat<br />Choose 'ReTrace' tab. <br />- Mapping file: <Project>\proguard\1.0\mapping.txt<br />- Obfuscated stack trace: <stacktrace from dev console><br />- click 'Retrace!'oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-3026062902836807352012-04-09T07:39:00.001-07:002012-04-09T07:42:10.235-07:00"Widget Preview" для планшетовПроект приложения живёт в android-sdk\samples\android-11\WidgetPreview - скомпилировать, залить на планшет. Скриншоты кладёт в sdcard/Download/<br /><br /><br />adb pull sdcard/Download/[app_name]_ori_[orientation].png [remote_location]oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-11905412156547908172012-03-30T01:40:00.001-07:002012-03-30T05:39:32.307-07:00Could not load widgetи подобные проблемы на виджетах были, если забыть указать протокол в xmlns:android="http://schemas.android.com/apk/res/android"oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-10053921339467829782012-03-23T03:13:00.000-07:002012-03-23T03:14:03.927-07:00dull...E/AndroidRuntime(6467): FATAL EXCEPTION: main<br />E/AndroidRuntime(6467): java.lang.NullPointerException<br />E/AndroidRuntime(6467): at android.text.BoringLayout.isBoring(BoringLayout.java:228)oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-64587142072707288132012-03-23T02:40:00.006-07:002012-03-23T02:46:40.938-07:00LinearLayout inside the ScrollView...<br />< ScrollView <br /> android:layout_width="fill_parent"<br /> android:layout_height="0dp"<br /> android:layout_weight="1.0"<br /> <br /> ><br /> < LinearLayout<br /> android:id="@+id/toucheble_layout"<br /> android:layout_width="fill_parent"<br /> android:layout_height="match_parent"<br /> android:layout_alignParentBottom="true"<br /> android:layout_below="@+id/calendar_footer"<br /> android:orientation="vertical" <br /> android:layout_weight="1.0"<br /> ><br />...<br /> </LinearLayout><br /></ScrollView><br /> <br /><br />LinearLayout не заполняет весь scrollView по высоте. Решение - добавить android:fillViewport="true" в ScrollView<br />___<br />И - да, GridView (как и ListView) не следует помещать в ScrollView, он сам по себе умеет прокручиваться.oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-66633832046197915992012-03-14T01:32:00.003-07:002012-03-14T01:40:26.495-07:00Failed to install *.apk on device ***: timeoutЛечение: увеличить таймаут подключения для ADB. В eclispe: Window -> Preferences -> Android -> DDMS -> ADB Connection timeout (ms)<br /><br />Проблема часто встречается при работе с Galaxy Taboyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-43296509743630880192011-11-09T03:58:00.000-08:002011-11-09T04:14:05.669-08:00Live Wallpapers & Phone restartОбнаружила, что живые обои, живущие на sd-карте, будучи установленными в качестве текущих, при перезапуске аппарата "слетают", и автоматически выставляются дефолтные. Если же обои живут в памяти телефона, такого не происходит, т.к. её не нужно долго и упорно маунтить, как карточку.<br /><br />Отсюда дилемма - если обои мнего весят, нехорошо их насильно помещать в память девайса. Но и их пропажа после перезагрузки, мягко говоря, неприятна.<br /><br />Как вариант, прописывать installLocation="auto" и в описании приложения указывать на неприятную деталь пользователю, чтобы он уже сам переместил приложение в соответствии со своими надобностями.oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-87676435262109018992011-11-09T03:52:00.000-08:002012-03-23T02:43:42.797-07:00Справочное: хоткеи эмулятораотсюда: http://developer.android.com/guide/developing/tools/emulator.html
<br />
<br />
<br />Home - HOME
<br />Menu - F2 or Page-up button
<br />Back - ESC
<br />Call/dial button - F3
<br />Hangup/end call button - F4
<br />Search - F5
<br />Power button - F7
<br />Audio volume up button - KEYPAD_PLUS, Ctrl-5
<br />Audio volume down button - KEYPAD_MINUS, Ctrl-F6
<br />Camera button - Ctrl-KEYPAD_5, Ctrl-F3
<br />Switch to previous layout orientation (for example, portrait, landscape) - KEYPAD_7, Ctrl-F11
<br />Switch to next layout orientation (for example, portrait, landscape) - KEYPAD_9, Ctrl-F12
<br />
<br />Toggle cell networking on/off - F8
<br />Toggle code profiling - F9 (only with -trace startup option)
<br />Toggle fullscreen mode - Alt-Enter
<br />Toggle trackball mode - F6
<br />Enter trackball mode temporarily (while key is pressed) - Delete
<br />DPad left/up/right/down - KEYPAD_4/8/6/2
<br />DPad center click - KEYPAD_5
<br />Onion alpha increase/decrease - KEYPAD_MULTIPLY(*) / KEYPAD_DIVIDE(/)
<br />oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-59398289858247582932011-10-26T13:04:00.000-07:002011-10-26T13:13:47.562-07:00Green Door Live Wallpaper<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-Ra5WVIEpP-c/Tqhpc7G10YI/AAAAAAAAAbs/QNu5gjdeUl8/s1600/device2---24bit.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 180px; height: 320px;" src="http://3.bp.blogspot.com/-Ra5WVIEpP-c/Tqhpc7G10YI/AAAAAAAAAbs/QNu5gjdeUl8/s320/device2---24bit.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5667896076669407618" /></a><br />Hurray! Green Door Live Wallpaper in Android Market!<br /><br />https://market.android.com/details?id=com.oyra.greendoor&feature=search_result&rdid=com.oyra.greendoor&rdot=1&pli=1<br /><br />There were problems with app appearence in Market Search, but now everything is OK. Thanks to the Android Market Team.<br /><br />Enjoy!oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-47588623003500353612011-09-23T07:30:00.000-07:002011-09-23T07:34:01.864-07:00Парсинг xml. хозяйке на заметкуЕсли при парсинге xml средствами Android получаем XmlPullParserException "PI must not start with xml", причиной может послужить <a href = "http://stackoverflow.com/questions/4938231/xml-pull-parser-error-when-declaration-present/4942901#4942901" target="_blank">вот что</a>oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-72434707870206437662011-09-21T06:34:00.000-07:002011-09-21T06:55:26.927-07:00कस्टम font in two steps1. <br />put font file to assets/fonts/myfont.ttf<br /><br />2.<br /><br />Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/myfont.ttf");<br />TextView text = (TextView)findViewById(R.id.my_text);<br />text.setTypeface(tf);<br /><br />That's all.<br /><br />P.S. कस्टम is a result of auto replacement of blogger or my browser. The original word is "custom" :)oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-68566912946462131462011-04-06T13:11:00.001-07:002011-04-06T13:11:39.532-07:00"Loading samples into the SoundPool that do not fit in ram will not result in an exception being thrown, nor is there a soundId returned that can be checked for failure. So you must look at your logs, and pray to the Android gods that your samples fit on the target device."<br /><br />(from http://stackoverflow.com)oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-90260874057178270562011-04-06T13:06:00.000-07:002011-04-06T13:10:21.850-07:00ToastС Toast предпочтительно использовать getApplicationContext(), а не контекст activity (что бы ни говорилось <a href="http://developer.android.com/reference/android/widget/Toast.html#makeText(android.content.Context, java.lang.CharSequence, int)">официально</a> ). Говорят, могут быть проблемы с освобождением памятиoyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-43873442490298868252011-04-06T13:03:00.000-07:002011-04-06T13:05:09.451-07:00Android methodsclass android.app.ActivityManager<br />public static boolean isUserAMonkey ()<br /><br />Returns "true" if the user interface is currently being messed with by a monkey.<br /><br />-----<br />class android.util.Log<br />public static int wtf (String tag, String msg)<br /><br />What a Terrible Failure: Report a condition that should never happen<br /><br /><br />(оба с API v.8. Андроид-мейкеры отрываются :))oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0tag:blogger.com,1999:blog-2753154570565748992.post-81753011230481472372010-11-13T03:20:00.000-08:002010-11-13T04:20:14.575-08:00Google Developer Day 2010кратко о том, что там было. <br /><br />Я посетила андроид-ветку конференции, 6 докладов.<br />1. Reto Meier. Как пишутся эпические приложения под Android.<br />Началось с проблем то ли с презентационным ноутом, то ли с проектором. Так как на починку ушло довольно много времени, докладчик пробежался по своей презентации очень быстро, некоторые слайды пролистывая с односложным комментарием - не удавалось их даже прочитать. Обещал через недельку выложить эту презентацию в общий доступ. Кроме этой, будет доступно ещё несколько презентаций с конференции. Говорил об общих вещах, своеобразных best practices, которые потом неоднократно упоминались в следующих докладах. <br />Например, <br />- always support trackball navigation <br />- use relative layouts<br />- mark unnesessary device features as 'required="false"' (и потом проверять их наличие в коде при помощи PackageManager.hasSystemFeature(...)).<br /><br />2.Roman Nurik. Лучшее, что Android может предложить пользователю.<br />Начал выступление радостным "Привет!", сказал, что он русский, просто живёт в Америке и... плохо говорит по-русски.:) Рассказывал в основном про UI, основная идея выступления - "наймите дизайнера":) Дал несколько упрощающих жизнь ссылок (http://unitid.nl/2009/11/fireworks-template-for-android/ , http://code.google.com/p/android-ui-utils/, http://android-ui-utils.googlecode.com/hg/asset-studio/dist/icons-launcher.html, http://www.slideshare.net/AndroidDev/android-ui-design-tips)<br /><br />3. Justin Mattson. Что нового в мире разработки под Android.<br />Обновление Speech API (распознавание речи), <br />AppData Backup API, <br />установка программ на карточку http://developer.android.com/guide/appendix/install-location.html<br />и т.д. <br />Об этих вещах можно почитать в обзоре новшеств API level 8: http://developer.android.com/sdk/android-2.2.html<br /><br />4. Dan Galpin. Close to the Metal: пишем на Android NDK.<br />Потрясающий чел :) "Кто считает себя хардкорным программером? Почему так мало? Все вы - хардкорные программеры!" Рассказал о возможности использования native-кода (C/C++) на android. Пожалуй, люди, работающие с этим, действительно все до единого hard-core) Осталось ощущение, что это сильно неудобная и запутанная, но потрясающе увлекательная область.<br /><br />5. Justin Mattson. Ваше приложение пойдёт на всех устройствах Android.<br />Начало выступления пропустила, так как заслушалась предыдущего оратора, отвечавшего в холле на затянувшиеся вопросы.<br />Доклад - фактически объединение первого и второго выступлений. Советовал использовать новые фичи, но не забывать проверять, поддерживаются ли они на девайсе. Полезная ссылка: http://android-developers.blogspot.com/2009/04/backward-compatibility-for-android.html<br /><br />6. Reto Meier, Mike Aizatsky. Мобильная разработка: HTML5 или Native?<br />Изначально вместо этого доклада я собилалась посетить другой - о монетизации мобильных приложений. Но, как оказалось, в том зале (ветка "Монетизация") был отвратительный звук. На андроид-ветке использовались нормальные микрофоны (и то докладчиков чётко слышно было только сидя напротив колонок), а здесь - гарнитурка (такую Reto Meier на открытии конференции выкинул со словами "Не используйте дешёвые гарнитуры", когда зал не смог разобрать ни слова из его речи). Тем, кто слушал синхронный перевод, наверное, было неплохо, но мы же люди гордые :)<br />Я вернулась в андроид-зал. Доклад вышел странный, будто бы высосанный из пальца, ответ на поставленный вопрос - both.<br /><br />***<br />Пара слов об остальном.<br />Большой зал с диванчиками и мешками-сидениями для "поваляться". Столики, холодильники с напитками и перекусывательная фигня. Стойки PlayStation - источник радости от разглядывания по-дурацки извивающихся людей с весёленьким розовым пультом в руке (почувствовать себя гладиатором на арене - действительно кайфово). Два стола с игрой mindball. Нам сказали, что они стоят по 12 тыс.евро каждый, поэтому ставить на них стаканы нельзя:) Двое садятся, цепляют на головы повязки с проводами и стараются расслабиться. На столе между ними - монитор с графиками и шарик на дорожке. Он катится к тому, кто менее расслаблен (рассказывали, что прибор замеряет альфа и, кажется, гамма-волны мозга), выигрывает более спокойный. Народ сразу предложил альтернативные правила - считать победителем притянувшего шарик к себе :) Мы долго экспериментировали с игрой, но научиться выигрывать всегда так и не удалось. Диаграммы активностей, определённо, реагируют на смех подопытного и, кажется, на random() :)<br /><br />А ещё были GTUG - Google Technology User Groups - там были пятиминутные выступления о проектах, основанных на технологиях Google. Ну, и раздача слонов, то есть маек с радостным "Я был на GDD2010"oyrahttp://www.blogger.com/profile/16264329949434978325noreply@blogger.com0