Programming & Tools/Android2011. 5. 27. 14:52

Application.mk 를 만들고 APP_MODULES에 모듈 이름들을 나열하면 된다.
Android.mk 에 다수개의 LIB를 정의하고 Application.mk 의 APP_MODULES에 열거해서
사용해도 된다.

Android.mk

 LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)


LOCAL_CPP_EXTENSION := .cpp

LOCAL_CXX_INCLUDES := $(LOCAL_PATH)/include

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include


LOCAL_SRC_FILES := hello-jni.cpp \

calc.cpp



LOCAL_MODULE := hello-jni


include $(BUILD_STATIC_LIBRARY)




Application.mk
APP_MODULES := hello-jni 

Posted by 다크쌍피
Programming & Tools/Android2011. 5. 17. 14:35
File Write

try { // Save File

     FileOutputStream fos = openFileOutput("test.txt", Context.MODE_WORLD_READABLE);

     String str = "<maintag>\r\n" +

                     "<System>\r\n" +

              "<EcoServerIP>192.168.1.10</EcoServerIP>\r\n" +

                 "<DataTestType>1</DataTestType>\r\n" +

                     "</System>\r\n" +

                  "</maintag>";

      fos.write(str.getBytes());

      fos.close();

      Toast.makeText(EcoAgent.this, "input test", 0).show();

     } catch(Exception e) {

} 

File Read
 try { // Load File

       FileInputStream fis = openFileInput("test.txt");

       byte[] data = new byte[fis.available()];

       while(fis.read(data) != -1) {;}

       fis.close();

       Toast.makeText(EcoAgent.this, (new String(data)), 0).show();

     } catch(Exception e) {

}




Posted by 다크쌍피

Device 연결해서 구동시 아래 에러 발생 해결법.

[2011-04-07 14:50:14 - EcoAgentUITest1] Failed to install xxxxxxxx.apk on device 'M110axxxxx': timeout

[2011-04-07 14:50:14 - EcoAgentUITest1] Launch canceled! 

Application 이 무거워 질경우 읽어 오는데 시간이 걸려서 실행 및 업데이트 시 Time out 에러가 발생한다.
기본 값이 5초여서 5초 이상 응답이 없을 경우 에러가 발생하므로 시간을 늘려 주면 된다.


Eclipse -> Preferences(환경설정) -> Android -> DDMS -> ADB connection time out (ms) : default (5000)

Posted by 다크쌍피

Title bar를 없애는 방법은 activity 메소드에 android:theme="@android:style/Theme.NoTitleBar" 항목을 추가 하면 된다.


 <activity android:name=".EcoAgentUITest1"

                  android:label="@string/app_name"

                  

android:theme=

"@android:style/Theme.NoTitleBar">
                            
<intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

</activity> 
 

* Notification Menu까지 모두 없애고 FullScreen으로 사용 하려면 아래 항목을 추가 하면 된다. 
 android:theme="@android:style/Theme.NoTitleBar.Fullscreen 

Posted by 다크쌍피
package exercice1.identificateur.ex;
 
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
 
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import exercice1.identificateur.R;
 
public class wifi1 extends ListActivity {
private static final String LOG_TAG = null;
public String getLocalIpAddress() {
   try {
       for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
           NetworkInterface intf = en.nextElement();
           for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
               InetAddress inetAddress = enumIpAddr.nextElement();
               if (!inetAddress.isLoopbackAddress()) {
                   return inetAddress.getHostAddress().toString();
               }
           }
       }
   } catch (SocketException ex) {
       Log.e(LOG_TAG, ex.toString());
   }
   return null;
}
 
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = new TextView(this);
     tv.setText(getLocalIpAddress());
     setContentView(tv);  
}
}
Posted by 다크쌍피
Programming & Tools/Android2011. 2. 24. 12:07
JNI를 사용하여 라이브러리 생성 시 디버깅 하기가 어렵다.
이를 해결하기 위해서 일반 printf 처럼 사용하는 방법이다.

1) android_log.h 파일을 생성한다.

#ifndef __ANDROID_LOG_H__

#define __ANDROID_LOG_H__


#include <android/log.h>


#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "libnav", __VA_ARGS__)

#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "libnav", __VA_ARGS__)

#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, "libnav", __VA_ARGS__)

#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, "libnav", __VA_ARGS__)

#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, "libnav", __VA_ARGS__)


#endif /* __ANDROID_LOG_H__ */



2) Android.mk 파일에 라이브러 추가.

LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog

LOCAL_CFLAGS := -DCONFIG_EMBEDDED\ -DUSE_IND_THREAD\



3) 디버깅 할 c 파일에 #include "android_log.h" 추가.

4) Eclipse 에서 디버그로 실행 하면 Log cat 창으로 출력.

* Log cat 은 Window > Show View > Other > Log cat 에 있음.
Posted by 다크쌍피
Programming & Tools/Android2011. 2. 24. 11:55
JNI를 사용해서 socket 생성 시 인터넷 사용 권한을 주지 않으면
소켓 생성 error 가 발생한다.

AndroidManifest.xml 파일에  다음 항목 추가.


<manifest ...> 

<uses-permission android:name="android.permission.INTERNET"/>

</manifest> 




Posted by 다크쌍피