Записки программиста Программирование и не только

7Май/130

AndroidSDK, JDK 64-bit и Windows 7 64-bit

Данная зверушка при попытке запуска SDK Manager или инсталятора ругается на отсутствие JDK, который на самом деле есть.

Решение:
Экспортируем и удаляем ветку реестра
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\]

И импортируем её в ветку
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\]
(путем редактирования путей в файле)

Вуаля, Ондроед находит Жабу.

20Ноя/120

[Android] Поворот экрана

Варианта управления экраном три:

1. Запретить поворот экрана
В раздел activity вписать

android:screenOrientation="portrait"

или

android:screenOrientation="landscape"

2. Обрабатываем поворот вручную
Т.к. метод onCreate() вызывается не только при создании Activity, но и при повороте экрана, можно отловить данные события.
Подробно можно почитать тут - http://developer.android.com/guide/topics/resources/runtime-changes.html (Кстати, там, возможно, опечатка)

Коротко:
Добавляем в класс Activity метод:

@Override
public Object onRetainNonConfigurationInstance() {
    final MyDataObject data = collectMyLoadedData();
    return data;
}

В котором производим сборку всех данных, которые нужно будет снова показать после поворота.

И в метод onCreate добавляем конструкцию:

final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance();
if (data != null) {
    loadMyData();
}

В которой данные распаковываем обратно.

3. Запрет автоматического пересоздания Activity
В AndroidManifest.xml дописать в раздел activity

android:configChanges="orientation|keyboardHidden"

Метод не рекомендуемый, т.к. в сложных приложениях придется самостоятельно обновлять данные внутри программы.
Подробнее можно тут: http://stackoverflow.com/questions/7818717/why-not-use-always-androidconfigchanges-keyboardhiddenorientation
Ну или в официальной доке.

14Ноя/120

[Android] Первое приложение

Программа будет простенькой.
По нажатию кнопки будет выводится одна из 4 фраз, выбранная случайно, в случайную же область экрана.
ОС: 2.2.2
Сделаем также иконку приложения.

Разрабатывать будем в IntelliJ IDEA

Метки записи: , Читать полностью
25Июл/125

[Android NDK] Unable to find native library

Пытаясь собрать пример из NDK получаю вот такую ошибку:

Caused by: java.lang.IllegalArgumentException: Unable to find native library: native-activity

Весь интернет пишет какую-то ересь типа:
"Поправьте в AndroidManifest.xml строчку android:hasCode="false" на android:hasCode="true" и будет вам счастье"

А вот хер! Никакого эффекта.
Так бы и закончилось моё желание писать на С++ под Дроида, но тут я натыкаюсь на отличную ссылочку:
http://mobilepearls.com/labs/ndk-builder-in-eclipse/

Получается, что проблема в самом Эклипсе, блин.

Коротко:

1. Заходим в Properties проекта в раздел Builders. Жмём New...
2. Выбираем тип Program и жмём Ok
3. Location указываем путь до ndk-builer'а (я указал абсолютный путь. Под Вин это звучит так: <путь в системе>\android-ndk-r8\ndk-build.cmd)
4. Working directory - путь до папки с проектом (Моё: <путь в системе>\android-ndk-r8\samples\native-activity
5. На том же окошке переходим во вкладку Refresh, ставим галочку и выбираем Specific resources. Разворачиваем проект и ставим галочку на lib. Finish
6. Вкладка Build Options. Проверяем наличие галочки на During auto builds и ставим галку на Specify working set of relevant resources. Разворачиваем проект и ставим галочку на jni
7. Жмем Apply, Ok, Ok

Не забываем нажать Project/Clean
Всё, теперь проект запускается без ошибок.

Метки записи: , , 5 Комментарии