posted by 셀딤==시라이츠 2012. 11. 5. 12:27

안녕하세요!


오늘 간단하게 포스팅 할 내용은

안드로이드 앱을 만들 때, 자주 사용될 수 있는 특별한 기능중에

"하드웨어 키"의 조작에 대해 알아보도록 하겠습니다.


 하드웨어 키란 액정을 제외한 외부의 홈, 메뉴, 뒤로가기, 볼륨, 전원 등의

 물리 버튼들을 말하는데요, 특수한 경우에 이런 키들의 기능을 임의로 바꾸거나

 해당 기능을 막아줘야 할 일이 발생 합니다.

 (예를 들어 홈키를 막아주거나, 뒤로가기 키를 눌렀을때 특정 화면이 나오도록 한다거나)


 1. home key를 막아보자.

  그다지 어려운 부분은 아닙니다. 그냥 아무곳이나 필요한곳에

  onAttachedToWindow(); 

  호출해 주고

  

  아래에 해당 메서드를 override 해주면 되겠습니다.

 
@Override
public void onAttachedToWindow() { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);    
    super.onAttachedToWindow();
}

  를 넣어주면 간단히 작동됩니다.

  activity 자체의 window를 받아와 해당 화면의 파라미터에서 홈키를 잠궈 줍니다.

 

  단. 여기서 하나 문제가 발생하는데, 

  ICS 이상의 버전 혹은, 제조사에서 framework 단을 건드려 버튼을 여기저기 만저둔경우

  이게 안먹힙니다. 전혀 안먹히고, home 키 자체의 이벤트도 조정이 안됩니다.

  이럴땐 어쩔수없이 런쳐로 가던가 framework 자체를 만져줘야하는데 곤란한 일이지요.

  일반적인 개발에서 여기까지 내려왔다면 ㅈㅈ쳐야할지도 모릅니다. ;ㅅ;



 2. 하드웨어 키에 이벤트 넣기.

  이제 홈키를 막았다면, 홈키의 역활을 바꾸어 봅시다.

@Override
public boolean dispatchKeyEvent(KeyEvent e){
    if(e.getKeyCode() == KeyEvent.KEYCODE_BACK ){
        if(e.getAction() == KeyEvent.ACTION_DOWN ){
            System. exit(RESULT_OK);
        }
        return true;
    }
    return super.dispatchKeyEvent(e);
}

  위 코드는 home키가 눌러졌을 때, App이 정상종료 (RESULT_OK) 값을 주고 종료되도록

  구성되어있습니다. 직관적으로 flag값이 주어져있으므로 보시고 간단히 수정하시면 될듯 합니다.





posted by 셀딤==시라이츠 2012. 10. 23. 11:29

안녕하세요!


오늘은 가상머신을 사용하여서 우분투를 사용할 때,

가급적 편리하고 쾌적한 사용 환경을 위한 설정방법 몇가지에 대해 포스팅 해보려고 합니다.

초보자 분들께서 참고하시면 많이 편리할 듯 합니다. ^^

해당 내용은 Ubuntu + Oracle VM VirtualBox 를 기준으로 합니다.


1. 가상머신에서의 우분투 해상도

 -  처음으로 우분투를 사용해보기 위해 가상 머신을 다운로드 하고 우분투를 깔아보았습니다.

   "자 이제부터 리눅스의 세계에 빠져보자!" 하는데,

    화면이 너무 작습니다. 해상도도 최대 800x600밖에 지원이 되질 않습니다.

    전체화면 전환하면? 그냥 같은 해상도가 확대될 뿐입니다. 흐리고 불편하지요.

   

    그렇다고 모니터 장치를 설치해 줄 수 있느냐? 그것도 아닙니다. 될리가 없지요.

    가상머신에서 임의로 잡아둔 모니터를 어떻게 할 방법이 없다 이겁니다.


 - 이럴때 게스트 확장 설치로 이 부분이 해결이 됩니다.

   "게스트 확장" 이라는 물건은, 가상머신 프로그램의 회사에서 지원하는 확장 도구 기능인데요,

   이놈을 우분투에 설치해 주면, 확장 설정이 가능해지는 원리입니다.

   그럼 따라가 보시죠.


2. 게스트 확장설치

 - 사실 정말 간단합니다. 그냥 메뉴에 있거든요. 그리고 명령 하나 입력하면 끝납니다.

- 메뉴 -> 장치 -> 게스트 확장 설치 를 선택합니다.

 

- 확장 설치를 위한 DVD가 마운트 되고 자동실행 창이 뜹니다. 당연히 자동실행!


 - 관리자 권한을 획득합니다 (시스템 암호를 넣어주면 됩니다.)


 - 터미널이 열리며 문제없이 게스트 확장이 설치가 됩니다.

   "하단에 Press Return to close this window.." 메시지가 뜨면 엔터키를 누르고 빠져나온다음

   시스템을 가볍게 재시작 해줍시다.


3. 설치 완료 및 확인

 - 재시작이 되셨나요?

   이제 다시 확인해보지요!


- 기존에 있던 해상도 이외에 여러가지 해상도가 추가 되었고, 또 정상적으로 적용도 가능합니다.


- 거기다 윈도우즈 창 크기를 늘리고 줄이듯이 잡아 끌어주면 우분투의 해상도도 똑같이 변경됩니다.

   최대화 하면 화면 전체를 커버하는것도 당연한 얘기구요!



생각보다 사진이 많았는데, 차근차근 따라해보셨는지요?

다음번에는 단순히 해상도를 건드리는 것 이외에 심리스 모드라는 부분을 설명드리도록 하겠습니다.

심리스 모드 써보시면 아마 정말 편리하다 느끼실 겁니다.


이상입니다. ^^



'Study > VM-Ubuntu' 카테고리의 다른 글

[Linux-Ubuntu]기초적이고 간단한 명령어 일람  (0) 2012.10.17
posted by 셀딤==시라이츠 2012. 10. 17. 10:35


  안녕하세요.

  오늘 첫글은 정말 별거아니지만,

  누구나 리눅스가 익숙하고 터미널이 익숙하다면 당연히 알법한 내용이지만,

  잊어버리고 참고하고 싶을때 참고하시라고 정리하는 리눅스 터미널 기본 명령어 일람 입니다.

  지극히 초보자를 위해서 길고 최대한 편안하게 설명하려고 노력하였으므로 내용이 깁니다.

  공부한다 생각하시고 한번쯤 읽어보시는것도 도움이 되지 않을까요?


  어디까지나 제가 기본적인 실습이나 공부를 위해서 조작하는 도중에

  필요에 의해서 정리한 내용들이구요, 1번 항목에서 대략적인 개요와

  2번 항목에서 각각 명령에 대한 자세한 설명을 첨부하겠습니다.

  차근차근 추가가 되는 내용들 또한 업데이트 될 예정입니다.



 1.  터미널 조작 명령어

sudo passwd root

첫 설치 후 root 계정 설정하기

tar zxvfp ~~.tgz

tgz / tar.gz 파일에 대한 설치(압축해제) 

rm -rf 

내용이 있는 폴더 삭제하기 

apt-get install ~~페키지 설치 

apt-get update

페키지 저장소 갱신 

  
  
  
  
  


 2. 명령어 설명

 A. sudo passwd root

 

B. tar zxvfp ~~.tgz


C. rm -rf


이상으로 명령어에 대한 정리 글을 마치도록 하겠습니다.

정말로 별거없고 쉬운 내용이였습니다만,

그래도 아직 기초가 많이 안되셨거나

차근차근 해보시는 도중에 의문점이 생기셔서 찾아보시고

도움이 되셨으면 합니다. ^^



posted by 알 수 없는 사용자 2010. 3. 19. 11:57


 따.. 딱히.... 포스팅 할께 없어서 그런거 아닙니다.
 그,, 그렇다고 귀찮아서 그런것도 아니구요. ㅠㅠ

 


  올해는 조금 만만하게 짜졌습니다.
  사실 이렇게 널널하게 짤 생각이 아녔는데
  수강신청을 장렬하게 패배하는 바람에
  전공을 반이상 포기하고 재수강을 구겨넣고
  거기다 시간표 이리저리 제어보다보니
  이꼴이 났네요,,
  그나마 전공반 교양 반이라는게 다행이면 다행이랄까요,
  덕분에 전 수요일 수업만 끝나면 햄볶는답니다 <<어이!!!


posted by 알 수 없는 사용자 2009. 9. 16. 20:28

  우연히 고등학교 동창의 부탁으로 약 2주간 프로그래밍 과제를 도와주었습니다
  (엄밀히 따지면 다 제가 짠거라는.. ㄷㅅㄷ <<?!)
  군제대 이후에 C언어에 생각보다 많이 감이 떨어졌었는데
  아는 한도 내에서 코드를 짜다보니까
  코딩하는 감각은 좀 돌아온것 같네요. ^^
  C++이나 .NET같은경우 아직 손도 안대봐서
  GUI를 만드는법을 모르는데도, 그래픽 형식의 시계를 만들어야 하다보니
  GUI를 대신할 문자조합에서 엄청난 양의 코드가 들어가 버렸습니다
  지금 제가 봐도 좀 한심하다고 느껴질정도??
 
  출력화면은 다음과 같습니다
 
사용자 삽입 이미지
   뭐랄까, 숫자 하나하나를 문자조합으로 만들다보니, 코드가 쓸데없이 늘어나버렸지만
   나름 만들어서 실행시켜보니 뿌듯합니다. ㅎㅎ
   당연히, 디스플레이 부분을 제외하면 코드가 엄청 짧은 편입니다
   time.h 헤더파일을 불러오면,  헤더파일 내부의 구조체를 이용하여
   간단하게 시스템의 현재시간을 불러올 수 있고,
   이부분을 약간만 변형시켜서 조작해주면 이런 화면을 뽑을수 있습니다. ^^

    time.h 헤더에서 시간에 사용되는 요소들
struct tm
 {
  int tm_sec;   // Seconds
  int tm_min;   // Minutes
  int tm_hour;  // Hour (0--23)
  int tm_mday;  // Day of month (1--31)
  int tm_mon;   // Month (0--11)
  int tm_year;  // Year (calendar year minus 1900)
  int tm_wday;  // Weekday (0--6; Sunday = 0)
  int tm_yday;  // Day of year (0--365)
  int tm_isdst; // 0 if daylight savings time is not in effect)
};

   제가 Dev C++로 코딩하기 때문에 컴파일러 특성을 약간 탑니다.
   뭐 크게 상관은 없지만요 ㅎㅎ

#include<time.h>
#include<stdio.h>
#include<windows.h>

void gotoxy(int xpos, int ypos);
int select_num(int time_num,int pos_num);
int print_num(int printn, int loca_num);
int print_blank(void);

int main(void)
{
    int x, i;                                                                     
    int time_num[3] ;
       
    for(;;)                                                                    
    {  
        time_t timer;                                                             
        struct tm *t;                                                           
        timer = time(NULL);                                                     
        t = localtime(&timer);                                                    

        time_num[0] = t->tm_hour;                                                
        time_num[1] = t->tm_min;                                                 
        time_num[2] = t->tm_sec;                                                 

        gotoxy(0,3);
        if(time_num[0]>=13)                                                      
        {
             time_num[0] = time_num[0]-12;                                       
        }

        for(i = 0 ; i < 3 ; i++)                                              
        {
              x = time_num[i];                                                   
             select_num(x,i);                                                  
        }
        print_blank();  
        Sleep(1000);                                                                
     }
    System("PAUSE");                                                             
    return 0;
}
    출력부 함수까지 넣으면 상당히 복잡하고 지저분해 보이기 때문에 <<어이!
    출력부는 생략하구요.. (^^ 직접 한번 구현해 보세요, 제껀 부끄러워서. ㅠㅠ)
    출력에 쓰이는 함수가 3개, 화면에 뿌려주는 좌표를 위해서 gotoxy()를 사용하였습니다.
    time.h 헤더가 있으면 이렇게 간단하게 시간값을 불러와서 조정 할 수 있습니다.