comtoo@comtoo-ubuntu:~$ ln -s .gvfs/
10.1.12.161의 comtoo/   192.168.184.128의 공유 문서/
10.1.12.161의 share/         SFTP, 호스트 10.1.12.161/
comtoo@comtoo-ubuntu:~$ ln -s .gvfs/ server_source

라고 해주고 탐색기로 server_source에 들어가보면 바로가기가 만들어져 있다


컬로 로그캣
  - logcat
./colorlogcat.py
Posted by 컴투


1. 부분빌드를 실행하기 위해서 필요
userId@build1:~/svn/export_20110705/trunk/Android$ source build/envsetup.sh
including device/htc/passion/vendorsetup.sh
including device/samsung/crespo/vendorsetup.sh

2. 사용자필요에 맞게 설정해 주면 됩니다. ( 예 : choosecombo 1 2 8 3 )
userId@build1:~/svn/export_20110705/trunk/Android$ choosecombo
Build for the simulator or the device?
     1. Device
     2. Simulator

Which would you like? [1] 1


Build type choices are:
     1. release
     2. debug

Which would you like? [1] 2


Product choices are:
     1. core
     2. full
     3. full_crespo
     4. full_passion
     5. generic
     6. generic_x86
     7. msm7627_ffa
     8. msm7627_surf
     9. msm7630_fusion
     10. msm7630_surf
     11. msm8660_csfb
     12. msm8660_surf
     13. sample_addon
     14. sdk
     15. sim
You can also type the name of a product if you know it.
Which product would you like? [msm7627_surf] 8


Variant choices are:
     1. user
     2. userdebug
     3. eng
Which would you like? [eng] 3

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.4
TARGET_PRODUCT=msm7627_surf
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=debug
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GINGERBREAD
============================================

3. mmm 빌드할려는 package의 주소
userId@build1:~/svn/export_20110705/trunk/Android$ mmm /package/apps/AAAA   엔터

4. 빌드가 되면 아래와 같이 부분빌드된 apk의 주소가 나옵니다.
out/debug/target/product/msm7627_surf/system/app/AAAA.apk)

5. adb를 이용하여 이전의 소스를 삭제하고 push를 이용하여 넣습니다.
adb push out/debug/target/product/msm7627_surf/system/app/AAAA.apk

6. adb reboot 꼭 해야함.

끝~


Posted by 컴투

Ctrl + space가 인식 되지 않을 때 Window - Preferences - General - Keys  에서 위 그림과 같이 편집하면 됨

Content assist 추가
Window - Preferences - Java - Editor - Content Assist  - Advanced 에서 위 사진과 같이
Java Type Proposals를 체크한다

'프로그래밍 > Linux(Ubuntu)' 카테고리의 다른 글

바로가기 만들기  (0) 2011.07.20
Ubuntu 환경만들기  (0) 2011.06.28
Posted by 컴투

환경만들기

  • root계정 활성화
assa@ubuntu-android:~# sudo passwd root
Enter new UNIX password:
Retype new UNIX password:

  • ssh service 설치 및 서비스 구동
assa@ubuntu-android:~#  apt-get install ssh
assa@ubuntu-android:~# /etc/init.d/ssh start
* Starting OpenBSD Secure Shell server sshd                               [ OK ]
  • ip address 확인
assa@ubuntu-android:~#  ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:e0:ef:57
          inet addr:192.168.0.76  Bcast:192.168.0.255  Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fee0:ef57/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6436934 errors:11 dropped:14 overruns:0 frame:0
TX packets:905306 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3409448628 (3.4 GB) TX bytes:90977125 (90.9 MB)
Interrupt:19 Base address:0x2000
  • 필수 패키지 설치(ubuntu의 경우)
assa@ubuntu-android:~# sudo apt-get install git-core gnupg flex bison bison-doc gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
  • repo 설치
assa@ubuntu-android:~# mkdir  bin
assa@ubuntu-android:~# curl http://android.git.kernel.org/repo >~/bin/repo
assa@ubuntu-android:~# cd bin
assa@ubuntu-android:~# chmod a+x repo  //실행권한주기
assa@ubuntu-android:~# repo
error: repo is not installed.  Use "repo init" to install it here. //설치확인
  • jdk 설치
# sudo apt-get install sun-java6-jdk
# sudo update-java-alternatives -s java-6-sun
  • cross compiler 4.4.3
  • path 수정
assa@ubuntu-android:~#cd
assa@ubuntu-android:~#vi .bashrc
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi
export PATH=$PATH:/home/XXXX/bin:/home/assa/jdk1.6.0_20/bin #jdk 1.6의 경우
#export PATH=$PATH:/home/XXXX/bin:/home/assa/jdk1.5.0_22/bin  #jdk 1.5의 경우
export JAVA_HOME=/home/assa/jdk1.6.0_20/
export JAVA_HOME=/home/assa/jdk1.6.0_20/
export USE_CCACHE=1


  • repo tree sync및 source download
assa@ubuntu-android:~#mkdir  mydroid
assa@ubuntu-android:~#cd mydroid
assa@ubuntu-android:~# repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo

-b 는 branch name임

assa@ubuntu-android:~#repo sync

다운로드가 시작됨


Samba Install


리눅스를 운영 중인 디스크 공간의 일정 부분을 Windows에서 네트워크 드라이브로 연결해 사용하기 위해서 삼바(Samba)를 주로 사용하게 됩니다.

터미널(프로그램 -> 보조프로그램 -> 터미널)을 실행합니다. 아래의 명령어는 Samba 설치하는 명령어입니다.

$sudo apt-get install samba //Samba 설치하는 명령어


smb.conf 파일의 설정파일을 변경해야 합니다.sudo

$sudo gedit /etc/samba/smb.conf


< 수정 사항 >

# security = user //<- 찾기 통해서 주석해제(# 없애면 주석해제 된다.)

//아래 부분을 추가해주면 된다.

[home]

path = /home

writable = yes

create mask = 755

directory mask = 755


samba 사용자 아이디는 우분투 8.10 사용자 계정을 넣어주시고, 암호도 동일한 암호로 입력해주시면 됩니다.

$sudo smbpasswd –a 사용자 아이디


아래의 명령어를 통해서 sambarestart 합니다.

$sudo /etc/init.d/samba restart

samba service restart 할 때,

 

ubuntu 10.10 으로 오면서

samba 에서 smbd 로 명령어가 변경되었다.

samba restart -> smbd restart

[편집] samba

 
[comtoo]
server string = xxxxxx share folder
comment = xxxxxx share folder
path =/home/xxxxxx
public = yes
only guest = no
writable = yes
create mask = 0777
force user = comtoo

 
Posted by 컴투
프로그래밍/기타...2011. 5. 17. 10:08
우분투에서 samba를 이용해서 파일공유 사용하기

파일을 공유하려는 서버에서 아래와 같이 삼바 패키지를 설치한다.
sudo apt-get install samba smbfs

이 공유에 접근할 아이디와 비밀번호를 설정한다.
sudo smbpasswd -a 아이디

접근 아이디를 지울 때는 다음과 같이 한다.
sudo smbpasswd -x system_username

삼바 서버를 설정하기 위해 문서 편집기로 설정파일을 연다.
sudo vim /etc/samba/smb.conf

그 안에 다음과 같은 내용을 입력한다.

# 기본적인 설정
[global]
# 워크그룹이름은 맘대로 정한다.
workgroup = WORKGROUP
encrypt passwords = yes
# 접근을 허락할 아이피 범위
hosts allow = 192.168.
# 문자 인코딩 설정, 우분투는 utf-8을 기본적으로 사용하고
# 이것이 윈도우즈에서도 한글이 잘 깨지지 않는다.
unix charset=utf-8
dos charset=utf-8
#공유할 디렉토리 이름, 이것은 여러개를 만들 수도 있다.
[MyDoc]
comment = My Documents
path = /공유할/디렉토리
#읽기 전용으로 접근할지 여부
read only = no
browsable = yes


삼바의 설정은 매우 다양하게 할 수 있다.
아래에 다양한 삼바 설정을 설명했다.

삼바 설정이 끝났으면, 설정이 제대로 되었는지 검사한다.
sudo testparm

문제가 없으면 삼바를 실행한다.
sudo /etc/init.d/samba restart

우분투에서 패키지로 설치된 삼바는 컴퓨터가 켜질 때마다 실행될 것이다.

우분트 클라이언트에서 공유에 접근하는 법은 두가지이다.

첫째)
위치 메뉴 > 서버에 연결 을 선택한 후,
서비스 종류는 Windows공유를 지정하고,
사용자 이름과 연결에 사용할 이름 부분만 위에서 지정한 네트워크사용자아이디를 지정하면 된다.

둘째)
mount -t cifs //삼바서버아이피/삼바공유폴더이름 /공유가/지정될/로컬폴더 -o username=네트워크사용자아이디,password=비밀번호,iocharset=utf8,file_mode=0777,dir_mode=0777
-o 이후로는 띄어쓰기를 해서는 안된다.

윈도우즈에서 삼바 서버에 접근하려면,
네트워크 환경에서 새 연결을 설정하거나,
net use o: \\삼바서버아이피\삼바공유폴더이름 비밀번호 /user:네트워크사용자아이디
로 연결하면 되고,
삭제는 net use o: /delete
로 하면 된다.


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

그외의 다양한 삼바 설정법은 다음과 같다.

▶ 네트워크 사용자 추가/편집/삭제 하는 법

☞ 네트워크 사용자 추가하기

sudo smbpasswd -a 네트워크사용자아이디
sudo vim /etc/samba/smbusers 를 한 후에, 아래의 내용을 추가한다.

네트워크사용자아이디 = "network username"

☞ 네트워크 사용자 편집

sudo smbpasswd -a 네트워크사용자아이디

☞ 네트워크 사용자 삭제

sudo smbpasswd -x 네트워크사용자아이디

----------------------------------------------------------------------------------
▶ 읽기 전용으로 폴더 공유하기 (인증=Yes)

sudo vim /etc/samba/smb.conf 로 설정파일을 열고

아래의 내용을 찾아서
security = user

아래처럼 바꾼다
security = user
username map = /etc/samba/smbusers

아래 내용의 앞에 있는 주석 표시를 제거한다.

;[homes]
;comment = Home Directories
;browseable = no
;valid users = %S
;writable = yes

삼바설정을 확인한다.
sudo testparm

삼바를 다시 시작한다.
sudo /etc/init.d/samba restart

----------------------------------------------------------------------------------
▶ 읽기/쓰기 권한으로 폴더 공유하기 (인증=Yes)

설정파일 안의 지정된 폴더에 아래의 옵션을 넣어준다.

(보기)

[MyFolder]
path = /home/my_id/my_shared_folder
writable = yes


----------------------------------------------------------------------------------
▶ 그룹 폴더들을 읽기 전용으로 공유하기 (인증=Yes)

sudo mkdir /home/group
sudo chmod 777 /home/group/
sudo vim /etc/samba/smb.conf

설정파일에서 아래의 내용을
security = user

아래처럼 바꾸고
security = user
username map = /etc/samba/smbusers

설정파일의 끝에 아래의 내용을 추가한다.

[Group]
comment = Group Folder
path = /home/group
public = yes
writable = no
valid users = system_username1 system_username2
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup


----------------------------------------------------------------------------------
▶ 그룹 폴더를 읽기/쓰기 권한으로 공유하기 (인증=Yes)

설정파일의 끝에 추가된 그룹 설정을 아래처럼 바꾼다.

[Group]
comment = Group Folder
path = /home/group
public = yes
writable = yes
valid users = system_username1 system_username2
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup

----------------------------------------------------------------------------------
▶ 공개 폴더를 읽기 전용으로 공유하기 (인증=Yes)

[global]
security = share

[public]
comment = Public Folder
path = /home/public
public = yes
writable = no
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup

아래처럼 nobody 계정을 만든다.

sudo smbpasswd nobody

----------------------------------------------------------------------------------
▶ 공개 폴더를 읽기/쓰기 권한으로 공유하기 (인증=Yes)

[global]
security = share

[public]
comment = Public Folder
path = /home/public
public = yes
writable = yes
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup

----------------------------------------------------------------------------------
▶▶▶ 네트워크 프린터에서 인쇄하기

삼바 설정파일에 다음의 내용을 추가하고

printing = cups
printcap name = cups

프린터 관리 서비스를 다시 시작한다.

sudo /etc/init.d/cupsys restart


----------------------------------------------------------------------------------
▶▶▶ 웹을 통해 삼바 설정 관리하기 : SWAT : Samba Web Administration Tool

▶ INETD과 SWAT 를 설치한다.

sudo apt-get install netkit-inetd
sudo apt-get install swat


☞ inetd daemon 설정을 편집한다.

sudo vim /etc/inetd.conf

☞ 아래의 내용을 찾아서

<#off#> swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat

☞ 아래처럼 바꾸어 준다.

swat stream tcp nowait.400 root /usr/sbin/swat swat

☞ 대몬을 재시작한다.

sudo /etc/init.d/inetd restart

☞ 만일, root비밀번호를 설정하지 않았다면, 아래처럼 설정한다.

sudo passwd root

☞ http://localhost:901 주소로 접속한다.

출처 : [기타] 인터넷 : http://ubuntuguide.org/wiki/Ubuntu:Feisty#Samba_Server

Posted by 컴투

안드로이드에서 사용할 수 있는 permission 종류

<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCOUNT_MANAGER"/>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
<uses-permission android:name="android.permission.BATTERY_STATS"/>
<uses-permission android:name="android.permission.BIND_APPWIDGET"/>
<uses-permission android:name="android.permission.BIND_DEVICE_ADMIN"/>
<uses-permission android:name="android.permission.BIND_INPUT_METHOD"/>
<uses-permission android:name="android.permission.BIND_WALLPAPER"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.BRICK"/>
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED"/>
<uses-permission android:name="android.permission.BROADCAST_SMS"/>
<uses-permission android:name="android.permission.BROADCAST_STICKY"/>
<uses-permission android:name="android.permission.BROADCAST_WAP_PUSH"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.CALL_PRIVILEGED"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>
<uses-permission android:name="android.permission.CLEAR_APP_USER_DATA"/>
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES"/>
<uses-permission android:name="android.permission.DELETE_CACHE_FILES"/>
<uses-permission android:name="android.permission.DELETE_PACKAGES"/>
<uses-permission android:name="android.permission.DEVICE_POWER"/>
<uses-permission android:name="android.permission.DIAGNOSTIC"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.DUMP"/>
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
<uses-permission android:name="android.permission.FACTORY_TEST"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.FORCE_BACK"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.GLOBAL_SEARCH"/>
<uses-permission android:name="android.permission.HARDWARE_TEST"/>
<uses-permission android:name="android.permission.INJECT_EVENTS"/>
<uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER"/>
<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.MANAGE_APP_TOKENS"/>
<uses-permission android:name="android.permission.MASTER_CLEAR"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.PERSISTENT_ACTIVITY"/>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.READ_CALENDAR"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_FRAME_BUFFER"/>
<uses-permission android:name="android.permission.READ_HISTORY_BOOKMARKS"/>
<uses-permission android:name="android.permission.READ_INPUT_STATE"/>
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.READ_OWNER_DATA"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
<uses-permission android:name="android.permission.READ_SYNC_STATS"/>
<uses-permission android:name="android.permission.REBOOT"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.RECEIVE_MMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.REORDER_TASKS"/>
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.SET_ACTIVITY_WATCHER"/>
<uses-permission android:name="android.permission.SET_ALWAYS_FINISH"/>
<uses-permission android:name="android.permission.SET_ANIMATION_SCALE"/>
<uses-permission android:name="android.permission.SET_DEBUG_APP"/>
<uses-permission android:name="android.permission.SET_ORIENTATION"/>
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS"/>
<uses-permission android:name="android.permission.SET_PROCESS_LIMIT"/>
<uses-permission android:name="android.permission.SET_TIME"/>
<uses-permission android:name="android.permission.SET_TIME_ZONE"/>
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>
<uses-permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES"/>
<uses-permission android:name="android.permission.STATUS_BAR"/>
<uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_READ"/>
<uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_WRITE"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_GSERVICES"/>
<uses-permission android:name="android.permission.WRITE_HISTORY_BOOKMARKS"/>
<uses-permission android:name="android.permission.WRITE_OWNER_DATA"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>

Posted by 컴투
커티(Qwerty) 자판이 달려있는 폰 개발을 하는 과정에서

Home key, EndCall Key, Back key, Sym key를 제한하게 되었다

1. key 이벤트를 사용하는 경우에는 아래의 메소드를 Override해서 사용해서 제한하면 되는데,
 Back key를 제한하기 위해서 사용하는 방법으로 onBackPressed()를 사용하거나 혹은
dispatchKeyEvent에서 사용을 제한하면 된다.

1).
@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
    Log.d("ramses8", "dispatchKeyEvent");
    return super.dispatchKeyEvent(event);
}

2).
@Override
public void onBackPressed()
{

  super
.onBackPressed();

  Log.d(
"ramses8", "onBackPressed");
}
3).
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    Log.d("ramses8", "onKeyDown");
   
return super.onKeyDown(keyCode, event);
}

2. Home Key, Back Key의 경우에는

\frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java

클래스 내에 아래의 Method부분에서 수정을 해주면 된다.

public boolean interceptKeyTi(WindowState win, int code, int metaKeys, boolean down,
            int repeatCount, int flags)

public int interceptKeyTq(RawInputEvent event, boolean screenIsOn)


3. 커티자판이 있는 폰의 Sym key 키를 제한하는 경우에는
frameworks\base\core\java\android\view\inputmethod\InputMethodManager.java

아래의 showInputMethodPicker(); 부분이 실행되지 않도록 막아준다.

그리고 dispatchKeyEvent(KeyEvent event)를 @Override해서 내용에 실행하고자 하는 이벤트를 넣어준다.

나의 경우에는 현재 실행되고 있는 Activity가 내가 keyEvent 제한을 줄려고 하는 Activity와 동일한지 비교하여
사용을 제한하였다...Activity비교 코드는 생략....

/**
     * @hide
     */
    public void dispatchKeyEvent(Context context, int seq, KeyEvent key,
            IInputMethodCallback callback) {
        synchronized (mH) {
            if (DEBUG) Log.d(TAG, "dispatchKeyEvent");
   
            if (mCurMethod == null) {
                try {
                    callback.finishedEvent(seq, false);
                } catch (RemoteException e) {
                }
                return;
            }
   
            if (key.getAction() == KeyEvent.ACTION_DOWN
                    && key.getKeyCode() == KeyEvent.KEYCODE_SYM) {
                showInputMethodPicker();
                try {
                    callback.finishedEvent(seq, true);
                } catch (RemoteException e) {
                }
                return;
            }
            try {
                if (DEBUG) Log.v(TAG, "DISPATCH KEY: " + mCurMethod);
                mCurMethod.dispatchKeyEvent(seq, key, callback);
            } catch (RemoteException e) {
                Log.w(TAG, "IME died: " + mCurId + " dropping: " + key, e);
                try {
                    callback.finishedEvent(seq, false);
                } catch (RemoteException ex) {
                }
            }
        }
Posted by 컴투
Unlocking Android에 나와 있는 코드를 이용하여 아래와 같이 만들어 사용하였다..
코드가 길지 않기 때문에 주석은 생략...

----- 변수 선언 ------
    private final String mPath = "/mnt/sdcard";    //SD카드 기본경로
    private final String mNewFolder = "test_folder";    //폴더이름
    private File mFile = null;
    private String mFilePath = null;
    private byte[] mTestFile = "1234".getBytes();
    private static String mFileName = System.currentTimeMillis() + ".txt";
----- 변수 선언 ------

1. 파일 생성
private boolean createFileFolder()
    {
        File fileDir = new File( mPath );
        try
        {
            if( fileDir.exists() && fileDir.canWrite() )
            {
                mFilePath = fileDir.getAbsolutePath() + "/" + mNewFolder;
                Log.e( "getAbsolutePath()", "getAbsolutePath() = "  + fileDir.getAbsolutePath() );
                File newFolder = new File( mFilePath );
                newFolder.mkdir();
                if( newFolder.exists() && newFolder.canWrite() )
                {
                    mFile = new File( newFolder.getAbsolutePath() + "/" + mFileName );
                    if( true == mFile.exists() )
                    {
                        mFile.delete();
                        if( DEBUG )
                            Log.d( LOG, "FILE EXIST" );
                    }
                    mFile.createNewFile();
                }
                else
                {
                    return false;
                }
            }
        }
        catch( Exception e )
        {
            return false;
        }
        return true;
    }
    
// 파일 쓰기
    private boolean writeFile()
    {
        byte[] fileContent = "1234".getBytes();
        FileOutputStream fos = null;
       
        try
        {
            fos = new FileOutputStream( mFile );
            fos.write( fileContent );
            fos.close();
            fos = null;
            mIsWrite = true;
            mSdWrite.setText( R.string.sd_write_ok );
            if( DEBUG )
                Log.d( LOG, "MEDIA_WROTE" );
        }
        catch( Exception e )
        {
            if( fos != null )
            {
                try
                {
                    fos.close();
                }
                catch( IOException e1 )
                {
                    e1.printStackTrace();
                }
                fos = null;
            }
            mIsWrite = false;
            mSdWrite.setText( R.string.sd_write_fail );
            e.printStackTrace();
            return false;
        }
        return true;
    }
    
// 파일 읽기
    private boolean readFile()
    {
        FileInputStream fis = null;
       
        try
        {
            fis = new FileInputStream( mFile );
            fis.read( mTestFile );
            fis.close();
            fis = null;
            mIsRead = true;
            mSdRead.setText( R.string.sd_read_ok );
            if( DEBUG )
                Log.d( LOG, "MEDIA_READ" );
           
            mFile.delete();
           
            if( DEBUG )
                Log.d( LOG, "MEDIA_DELETED" );
        }
        catch( Exception e )
        {
            if( fis != null )
            {
                try
                {
                    fis.close();
                }
                catch( IOException e1 )
                {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                fis = null;
            }
            mIsRead = true;
            mSdRead.setText( R.string.sd_read_fail );
           
            return false;
        }
        return true;
    }
Posted by 컴투

sdcard 파일 입출력

참조(공식 안드로이드 개발 사이트): http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

1. sdcard 에 접근하기 위해 manifest 파일에 permission 을 추가해 준다.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2. sdcard 가 마운트 되었는지 또는 쓰기 가능한지 등의 상태를 확인한다.
String state = Environment.getExternalStorageState()
 - state 가 Environment.MEDIA_MOUNTED 이면 마운트되어 있고 쓰기 가능하다.
 - state 가 MEDIA_MOUNTED_READ_ONLY 이면 마운트되어 있고 읽기만 가능하다.
 - 그외 는 sdcard 에 접근 할 수 없는 경우다.

3. . sdcard 의 File 객체를 받는다.
API level 7 까지는 Environment.getExternalStorageDirectory() 를 사용한다.
API level 8 부터는 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) 를 사용할 수 있다.
예) File path = Environment.getExternalStorageDirectory();

4. File 객체를 만든다.
위에서 받은 File 객체를 path 로 넣어준다.
예) File file = new File(path, "filename");

5. 파일을 조작한다.
 - 바이너리 파일 입출력은 FileInputStream/FileOutputStream 클래스를 이용한다.
 - 텍스트 파일 입출력은 BufferedReader/BufferedWriter 클래스를 이용한다.

#) getExternalStorageDirectory 함수를 사용하지 않고 "/sdcard/filename" 등의 경로를 File 생성자에 직접 넣어주면 IllegalArgumentException (예 'File /sdcard/filename contains a path separator') 이 발생한다
Posted by 컴투
작업중에 Home Key와 종료 Key를 제한해야하는 일이 있어서
찾고 있는데 잘 보이지가 않는다. 예전에 L사에 파견갔을데 홈키사용을 제한시켰는데 어디였었는지 잊어버렸다 ㅠㅠ
어째든 다시 찾아보니

frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java

키와 관련된 내용이 들어있다 계속 찾아봐야지...

bionic

 

- BSD libc 개선 (bionic libc)

bootable

 

bootloader & disk installer

build

 

1. Android Build script & linker directive

    (core/prelink-linux-arm.map)

   - .so file 어떻게 구성하는지

   - android application 동작할 사용되는 각종 library(.so)들이 로딩되는

번지를 미리 지정한 파일 

   - 이유: shared library static library처럼 쓰기 위한 것 로딩속도를 빠르게 하기 위함       

    참고) dll start address 없다

            static으로 하면 빠르다.

   kissuu) android 이유없이 죽을때가 있음.

      --> map file 상의 size를 넘어갔을경우     

                        

  2. generic board 대한 configuration

    (1) build/target/board/generic/AndroidBoard.mk

    - root filesystem 구성을 어떻게 해야하는가?? 대한 directive 파일

    - android 최종 결과물 구성서 자동으로 포함하고 싶은 binary들에 대한 install등을 결정

    - custom init.rc 혹은 init.%hardware%.rc 파일들의 install

 

    (2) build/target/board/generic/BoardConfig.mk

    - Android의 Makefile에 기본적으로 포함되는 최상위 Makefile

    - 주로 HAL enable/disable 관련이 깊음

    - Android.mk 파일에 영향을 주고 Android.mk 파일에서 define 제어할 있도록 설정하는 파일

   (ex> 

    ▪ BoardConfig.mk 의 BOARD_USES_GENERIC_AUDIO := true

    ▪ frameworks/base/libs/audioflinger/Android.mk 

            ifeq ($(strip $(BOARD_USES_GENERIC_AUDIO)),true)

              LOCAL_CFLAGS += -DGENERIC_AUDIO

            endif

    ▪ frameworks/base/libs/audioflinger/AudioHardwareInterface.cpp

            #ifdef GENERIC_AUDIO

                hw = new AudioHardwareGeneric();

            #else

cts

 

   - Compatability Test Suite 약자

  Android platform development kit JAVA 호환성 테스트

dalvik

 

   - dalvik vm source

development

 

- 개발시 필요한 utility & app

external

 

- Android 고유 library 아닌 linux혹은 기존에 작성된 라이브러리/binary들의 소스를 넣어놓은 디렉토리

- 여기서 작성된 library shared library(.so) binary들은 모두 system/lib, system/bin 각각 install

- framework test app/lib 여기에 작업

frameworks

 

 /policies

- PhoneWindowManager 소스가 들어있음

- Android 전체 시스템을 background에서 제어하는 최상위 application인 PhoneWindowManager

- PhoneWindowManager KeyGuard관련 화면 전체 제어(ex> rotation) event관리

(ex> home key관련)

    /base

- Android Framework source

/libs: Android base library(C++서부터)

   /audioflinger   : Android audio service & HAL source

   /surfaceflinger : Android video service & HAL

   /ui            

    Application Framework에서 JNI를 통해서 호출되는 Android framework client  part

    HAL(Input device 경우)  - EventHub.cpp

   /utils

    wrapping class, 압축관련 유틸리티등...

   /binder 

    Android Binder & Anonymous shared memory

/cmds

   binder관련인 service manager소스와 여러가지 command

/media

   media관련 client & service library

 

hardware

 

 HAL source & include

 일반적으로 android에서 사용하는 hardware관련 소스들을 포함

 반드시 디렉토리에만 위치하는 것은 아니다

 (vendor 디렉토리에 존재하는 경우도 많음)

 

   - libhardware

   board hardware dependcy 높은 하드웨어 모듈 들

   일반적으로 안드로이드 폰에 탑재가 되지 않고, cpu 혹은

   제조사의 모듈에 dependent 한 부분들

   안드로이드 소스를 이용해서 컴파일 하지 않는 경우가 많고

   모듈단위로 직접 컴파일 해서 안드로이드 root fs

   install하는 경우가 많다.

   

   - libhardware_legacy

   일반적으로 안드로이드 폰에 거의 반드시 있어야 하는

   hardware 모듈, 안드로이드 컴파일시 같이 컴파일 된다.

   - wifi/wifi.c

 

out

 

android compile 결과물 디렉토리

packages

 

  android 기본 application source

  주의해야할 점은 모든 app가 컴파일 되지는 않는다.

  모든 app 컴파일 되기 위해서는

  board관련 디렉토리의 Android 기본 board mk 파일을

  수정해야한다.

  ex> build/target/product/generic.mk

                           generic_with_google.mk

                          

 vi ntc100.mk

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

 $(call inherit-product, build/target/product/generic.mk)

 PRODUCT_MANUFACTURER := aesop

 PRODUCT_NAME := ntc100

 PRODUCT_DEVICE := ntc100

 PRODUCT_BOARD := ntc100

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

prebuilt

 

toolchain & 필요한 binary

system (read-only)

 

android 기본 binary 소스(ex> init)

 /core/init :  android init source

 /core/vold :  external storage 제어 모듈 

     Android 2.1까지

     vold.conf 파일 참조

 /vold      : vold2, android 2.2서부터 사용    

         vold.fstab

vendor

vendor specific code

  ex> HAL

  ex> product list관리

 

출처 : http://kissuu.egloos.com/3859448

Posted by 컴투