воскресенье, 22 мая 2011 г.

How to: Native Application for Android - Hello World


Для начала,
скачиваем NDK последней версии  http://developer.android.com/sdk/ndk/index.html
и SDK (вернее приложение adb) http://developer.android.com/sdk/index.html
рутованный телефон (не уверен что этот пункт обязателен)

Я использовал ubuntu 10.xx
1. распаковываем ndk (у меня в /rusboy/android-ndk-r5b)
2. заходим в папку ndk/samples создаем директорию hellonative
3. для простоты копируем из hello-jni директорию jni в hellonative и файл default.properties
4. в директории jni изменяем Android.mk таким образом

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := hn
LOCAL_SRC_FILES := hellonative.c

include $(BUILD_EXECUTABLE)

5. Си файл можно удалить и создать новый hellonative.c
6. В него вставляем код:

#include <stdio.h>

int main()
{
    printf("Hello Native\n");
    getchar();
}

adb файл скопирован в папку с проектом(для удобства)
7. Компилируем
8. Открываем терминал на Ubuntu и выполняем

# cd /root/android-ndk-r5b/samples/hellonative/
# ../../ndk-build
Install        : hn => libs/armeabi/hn

Бинарный файл находится здесь libs/armeabi/hn
9. выполняем в терминале из папки проекта

# adb shell
# su
# mkdir /data/tmp
# exit
# exit
# adb push /root/android-ndk-r5b/samples/hellonative/libs/armeabi/hn /data/tmp
56 KB/s (2368 bytes in 0.041s)
# adb shell
# chmod 744 /data/tmp/hn
# /data/tmp/hn
Hello Native

Источник информации: Simple NDK

понедельник, 2 мая 2011 г.

Событие onClick на Button

Для того что б получить повесить onClick событие на кнопку необходимо создать новый объект класса OnClickListener. Переопределить в нем метод onClick. После этого назначаем этот объект методом setOnClickListener кнопке.
Второй вариант, это создать новый класс и через implement привязать его к OnClickListener. Далее перегружаем onClick метод и уже на вход setOnClickListener передаем объект нового класса.
Пример второго способа ниже:

Как дописывать текст в конец файла

Вызываем конструктор FileWriter со вторым параметром true.
Пример кода под катом: