2013년 8월 2일 금요일

Android Multi User on ODROID-XU

ODROID-XU

The world’s first big.LITTLE architecture based bare-board computer. 
• Exynos5 Octa Cortex™-A15 1.6Ghz quad core and Cortex™-A7 quad core CPUs
• PowerVR SGX544MP3 GPU (OpenGL ES 2.0, OpenGL ES 1.1 and OpenCL 1.1 EP)
• 2Gbyte LPDDR3 RAM PoP
• USB 3.0 Host x 1, USB 3.0 OTG x 1, USB 2.0 Host x 4
• HDMI 1.4a output Type-D connector
• eMMC 4.5 Flash Storage

Android 4.2.2

device/hardkernel/odroidxu/overlay/frameworks/base/core/res/res/values/config.xml
    <!--  Maximum number of supported users -->
    <integer name="config_multiuserMaximumUsers">3</integer>











2013년 7월 31일 수요일

JNI int,String array parameter, return value

int array를 parameter로 넘겨기 예제(java->jni)

---------------------------------------------------------------------------------------
java file

public class Test {
    static {
        System.loadLibrary("test");
    }

    public static void func1(int arr[]) {
        native_func1(core);
    }

 private native static void native_func1(int arr[]);


---------------------------------------------------------------------------------------
cpp file

static void native_func1(JNIEnv* env, jobject obj, jintArray arr) {
    int size = env->GetArrayLength(arr);

    jint *value = env->GetIntArrayElements(arr, NULL);

    for (int i = 0; i < size; i++) {
        value[i] = i;
    }
 
    env->ReleaseIntArrayElements(arr, value, 0);
    return;
}

static const JNINativeMethod g_methods[] = { 
    { "native_func1", "([I)V", (void*)native_func1 }, 
}; 
  
---------------------------------------------------------------------------------------
//배열 생성 
int[] arr = new int[4];
//배열 전달
Test.func1(arr);


String array를 return value로 받기(jni->java)

---------------------------------------------------------------------------------------
java file
static jobjectArray native_func2(JNIEnv* env, jobject obj) {
    char *temp[4] = { "apple, "banana", tomato", "melon"};

    jobjectArray ret = (jobjectArray)env->NewObjectArray(4, env->FindClass("java/lang/String"),
            env->NewStringUTF(""));

    for (int i = 0; i < 4; i++) {
        env->SetObjectArrayElement(ret, i, env->NewStringUTF(temp[i]));
    }
    return ret;
}

static const JNINativeMethod g_methods[] = {
    { "native_func2", "()[Ljava/lang/String;", (jobjectArray*)native_func2 },
};


---------------------------------------------------------------------------------------
java file

public class Test {
    static {
        System.loadLibrary("test");
    }

    public static String[] func2() {
        return native_func2();
    }

    private native static String[] native_func2();



---------------------------------------------------------------------------------------
String[] str = new String[4];
str = Test.func2();

2013년 7월 29일 월요일

Ubuntu unity에서 한/영 전환키가 unity 실행키가 안되도록 하기

http://ubuntu.or.kr/viewtopic.php?p=101411

xmodmap -e 'remove mod1 = Hangul'

minicom setting for ODROID USB-UART Module Kit



install minicom

$sudo minicom -s

            +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

Serail port setup

=================================================================

    +-----------------------------------------------------------------------+
    | A -    Serial Device      : /dev/ttyUSB0                              |
    | B - Lockfile Location     : /var/lock                                 |
    | C -   Callin Program      :                                           |
    | D -  Callout Program      :                                           |
    | E -    Bps/Par/Bits       : 115200 8N1                                |
    | F - Hardware Flow Control : No                                       |
    | G - Software Flow Control : No                                        |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

=================================================================
                                                                             
            +-----[configuration]------+                                     
            | Filenames and paths      |                                     
            | File transfer protocols  |                                     
            | Serial port setup        |                                     
            | Modem and dialing        |                                     
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

Save setup as dfl


dev$ ls -l ttyUSB*
crw-rw---- 1 root dialout 188, 0  7월 29 12:30 ttyUSB0

minicom: Cannot open /dev/ttyUSB0: Permission denied

Just add your user to the dialout group so you have appropriate permissions on the device.

$sudo usermod -a -G dialout $USER

2013년 7월 24일 수요일

How to hide Naviation Bar.

Hide Navigation Bar.

edit build.prop
qemu.hw.mainkeys=1


or

setprop qemu.hw.mainkyes 1
killall system_server


If sdk version is API Level 11(Android 4.2.2), add setSystemUiVisibility function in your Activity.

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);


2013년 7월 18일 목요일

"couldn't install on usb storage or sd card"




Modify or delete the contents of yours SD card.


couldn't install on usb storage or sd card


Device mapper debugging message

[  193.421463] device-mapper: table: 254:0: crypt: Error allocating crypto tfm
[  193.421471] device-mapper: ioctl: error adding target to table

set Twofish cipher algorithm feature.
make menuconfig
< >   TEA, XTEA and XETA cipher algorithms
<*>   Twofish cipher algorithm
*** Compression ***



  ┌───────────────────────────────────────────────────────────────────────────────────────── Twofish cipher algorithm ──────────────────────────────────────────────────────────────────────────────────────────┐
  │ CONFIG_CRYPTO_TWOFISH:                                                                                                                                                                                      │
  │                                                                                                                                                                                                             │
  │ Twofish cipher algorithm.                                                                                                                                                                                   │
  │                                                                                                                                                                                                             │
  │ Twofish was submitted as an AES (Advanced Encryption Standard)                                                                                                                                              │
  │ candidate cipher by researchers at CounterPane Systems.  It is a                                                                                                                                            │
  │ 16 round block cipher supporting key sizes of 128, 192, and 256                                                                                                                                             │
  │ bits.                                                                                                                                                                                                       │
  │                                                                                                                                                                                                             │
  │ See also:                                                                                                                                                                                                   │
  │ <http://www.schneier.com/twofish.html>                                                                                                                                                                      │
  │                                                                                                                                                                                                             │
  │ Symbol: CRYPTO_TWOFISH [=y]                                                                                                                                                                                 │
  │ Type  : tristate                                                                                                                                                                                            │
  │ Prompt: Twofish cipher algorithm                                                                                                                                                                            │
  │   Defined at crypto/Kconfig:841                                                                                                                                                                             │
  │   Depends on: CRYPTO [=y]                                                                                                                                                                                   │
  │   Location:                                                                                                                                                                                                 │
  │     -> Cryptographic API (CRYPTO [=y])                                                                                                                                                                      │
  │   Selects: CRYPTO_ALGAPI [=y] && CRYPTO_TWOFISH_COMMON [=y]


2013년 7월 12일 금요일

Portrait HDMI for ODROID(Exynos4412)

for Exynos4412(mali)

edit build.prop and add this.

ro.sf.hwrotation=90


http://codewalkerster.blogspot.kr/2013/06/hdmi-screen-rotation-issue-for-odroid.html

edit device/samsung/exynos4/libhdmi/libhdmiservice/SecTVOutService.cpp


#include <cutils/properties.h>

void SecTVOutService::setHdmiRotate(uint32_t rotVal, uint32_t hwcLayer)
{
    //codewalker
    return;


---------------------------------------------------------------------------------------------------------




    void SecTVOutService::setHdmiStatus(uint32_t status)
    {   

        LOGD("%s HDMI cable status = %d", __func__, status);
        {   
            Mutex::Autolock _l(mLock);

            bool hdmiCableInserted = (bool)status;

            if (mHdmiCableInserted == hdmiCableInserted)
                return;

            if (hdmiCableInserted == true) {
                if (mSecHdmi.connect() == false) {
                    LOGE("%s::mSecHdmi.connect() fail", __func__);
                    hdmiCableInserted = false;
                }   
        #if 1  //yqf, 2012-6-18, keep it, first plug in cable with device landscape mode    
            else{ 
                   //added yqf, STAR00030984 & update roate value to hdmi after connect->disconnect->connect
                //codewalker
                int angle = 0;
                char value[PROPERTY_VALUE_MAX]; 
                property_get("ro.sf.hwrotation", value, NULL); 
                if (value != NULL)
                    angle = atoi(value);

                     mSecHdmi.setUIRotation(globalRotate, angle);
            if(mSecHdmi.mRotateInfoChange)
                mSecHdmi.mRotateInfoChange=false;
                    }