안드로이드2014. 6. 3. 15:45

전에 포스팅한 폰갭, 안드로이드 플랫폼 추가하는 중에 에러가 발생하는 경우! 에 이어서 추가로 작성하는 글입니다.


위 글에서는 윈도우 환경에서 에러가 나는 경우에 ant 설치하는 방법에 대해 다루고 있습니다.

그런데, OS X (Mac)에서도 폰갭(Phonegap)에 안드로이드(Android) 플랫폼을 추가하려고 하면 동일한 에러가 발생합니다.

역시 동일하게 ant를 설치해 주어야 합니다.


개념상으로는 윈도우나 OS X 이나 ant 설치하는 방법이 동일하지만, 몇가지 명령어가 다릅니다.

다만, OS X 와 리눅스는 유닉스 계열 운영체제라서 아래 표시하는 방법은 리눅스에서도 동일하게 사용 가능한 방법이라고 보시면 됩니다.


ANT는 아파치에서 주도하는 프로젝트 중 하나로, 소프트웨어 빌드 도구입니다.

이제 설치해 보겠습니다.



ANT를 다운받습니다.


ANT의 설치는 압축을 해제하고 환경변수를 등록하는 것으로 이루어집니다.

http://ant.apache.org/ 에서 바이너리로 다운 받아서 적당한 위치에 압축 해제를 하면 됩니다.


저의 경우에는 /Users/사용자계정명/ 에 압축을 풀었습니다.

일반적으로는 /usr/bin/ 을 많이 사용하는 것 같습니다.


그래서 제 경우에는 결과적으로 /Users/username/apache-ant-1.9.4/ 에 설치가 된 것입니다.


환경변수 추가 전에 ant가 실행되는 것을 테스트 해보고 싶으시면 다음과 같이 하시면 됩니다.


[압축 해제한 디렉토리]/bin/ant -version



ANT 설치된 디렉토리를 환경변수에 지정


단순히 다음과 같이 타이핑 하시면 됩니다.


export ANT_HOME=[압축해제한디렉토리]/ant

export PATH=${PATH}:${ANT_HOME}/bin


ANT_HOME 이란 환경변수에 압축 해제한 곳을 저장하고, PATH 변수에 디렉토리를 추가하는 형태로 작업합니다.

환경변수 지정할 때는 오타 발생하지 않도록 주의해서 작성해 주세요.

Posted by 다오나무
안드로이드2014. 6. 3. 10:28

일본 사이트 : http://whgadget.blog.jp/archives/38140828.html

국내 사이트 : http://android-app-easy.blogspot.kr/2014/05/blog-post.html

'안드로이드' 카테고리의 다른 글

OS X에 ant 설치하기  (0) 2014.06.03
안드로이드 launcher icon 실행 아이콘 사이즈  (0) 2014.01.14
안드로이드 마켓 등록  (0) 2012.07.03
Posted by 다오나무
안드로이드2014. 1. 14. 18:51

drawable-hdpi 72 * 72

drawable-ldpi 32 * 32

drawable-mdpi 48 * 48

drawable-xhdpi 96 * 96

drawable-xxhdpi 144 * 144

'안드로이드' 카테고리의 다른 글

OS X에 ant 설치하기  (0) 2014.06.03
안드로이드 22.3 다운그레이드  (0) 2014.06.03
안드로이드 마켓 등록  (0) 2012.07.03
Posted by 다오나무
기타2013. 9. 14. 16:10

 

짜릿한 역전승 즐거운 감상하시기 바랍니다.

'기타' 카테고리의 다른 글

파워디렉터를 이용하여 워터마크 삽입하기  (0) 2015.07.01
마이의 새로운 전략 전술 공개합니다.  (0) 2013.09.14
Mac, ip-time 그리고 VPN  (0) 2013.02.12
상식 상식  (0) 2012.06.15
우리은행 구로점  (0) 2012.05.22
Posted by 다오나무
안드로이드2012. 7. 3. 22:15

어플을 만들어 안드로이드 마켓에 등록할려고 하니 이것도 처음 하는 것이라. 쉽지는 않네요. 그래서 등록 방법을 남겨요.

 

1. 우선 자기가 만든 앱이 필요하겠죠. (apk 파일을 준비하세요)

 

2. 안드로이드 개발자 사이트로 접속합니다.

https://play.google.com/apps/publish/signup

구글 계정이 있다면 메일과 패스워드를 입력하시면 되지만 없으시다면 새로 가입해야 합니다. 

 

3. 개발자 정보를 입력해야 합니다.

 

4. 개발자 약관에 동의에 체크해야 합니다.

 

5. 마켓에 개발자 등록을 하려면 25$ 의 비용이 발생하는군요. 

 

6. 결제 정보를 입력하고 결제를 시도합니다. 

 

 7. 안드로이드 마켓의 결제가 완료되었습니다.

 

8. 결제가 완료되면 메일로 아래와 같은 메일이 옵니다. 

 

9. 결제를 하고 일정 시간이 지나면 안드로이드 마켓에 대한 개발자 등록이 승인 됩니다. 

 

10. 이제 안드로이드 앱을 마켓에 올려볼까요?

애플리케이션 업로드 버튼을 클릭하여 apk 를 올리신 다음 앱의 상세 정보를 입력해 주시면 됩니다.

 

Posted by 다오나무
PhoneGap2012. 6. 26. 15:30

PhoneGap(폰갭)에서는 anrdoid.app.Activity.onKeyDown() 메소드를 아래와 같이 재정의하여 사용자가 하드웨어 취소키(back키)를 누르면 브라우저의 뒤로가기를 수행합니다.

// com.phonegap.DroidGap.onKeyDown(int, KeyEvent) 메소드 

public boolean onKeyDown(int keyCode, KeyEvent event) {
 ... ...
     // If back key
     if (keyCode == KeyEvent.KEYCODE_BACK) {

     // If back key is bound, then send event to JavaScript
     if (this.bound) {
     this.appView.loadUrl("javascript:PhoneGap.fireEvent('backbutton');");
     }

     // If not bound
     else {

     // Go to previous page in webview if it is possible to go back
     if (this.appView.canGoBack()) {
     this.appView.goBack();
     }

     // If not, then invoke behavior of super class
     else {
     return super.onKeyDown(keyCode, event);
     }
     }
     }
... ...


그러나 때로는 사용자가 취소키를 누르면 이전 웹페이지로 이동하지 않고 앱을 종료시키는 것으로 정책을 바꾸고 싶은 경우도 있습니다. (특히나 아이폰을 고려하여 이전버튼을 포함하도록 웹페이지를 디자인한 경우).

폰갭에서는 취소키 동작을 재정의하는 2가지 방법이 있습니다.
 
1. DroidGap의 onKeyDown 메소드 오버라이딩
DroidGap을 상속받은 Activity에서 onKeyDown 메소드를 오버라이딩해서 백버튼을 적절히 핸들링해줍니다. 아래코드에서는 앱 종료여부를 묻는 확인창을 띄우도록 했습니다.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        confirmAppExit();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

private void confirmAppExit() {
    AlertDialog.Builder db = new AlertDialog.Builder(this);
    db.setTitle(R.string.exit_app_title)
         .setMessage(R.string.exit_app_message) // "프로그램을 종료하시겠습니까?"
         .setCancelable(true)
         .setPositiveButton(android.R.string.ok, new OnClickListener() {
             @Override
             public void onClick(DialogInterface dialog, int which) {
                 finish(); //확인버튼 누루면 앱 종료
             }
         })
         .setNegativeButton(android.R.string.cancel, null)
         .show();
}



2. 폰갭 javascript의 'backbutton' 이벤트 재정의(phonegap 0.9.5 이상)

function onLoad() {
    document.addEventListener("backbutton", backKeyDown, true);
}
function backKeyDown() {
    if (confirm('프로그램을 종료하시겠습니까?')) {
        navigator.app.exitApp();
    }
}
...
...
<body onload="onLoad()">


단순히 취소키 눌렀을 때 페이지 뒤로가기를 막으려면 아래코드로 충분합니다.

navigator.app.overrideBackbutton(true);

Posted by 다오나무
PhoneGap2012. 6. 26. 13:44

이제는 유지보수에만 전념하던 그래서 약간은 지루했던(잘 알지도 못하면서;) 안드로이드 개발에 또 하나의 도전 과제가 생겼다. 나태에 젖어 흐느적 거리고 있던 내게 팀장님이 재미있는 미끼를 던져주었다. 이름 하여 PhoneGap 하고픈 말은 나중에 보중하고 일단 개발자라면 늘 친숙한 Hello world 부터 찍어보자

개발자는 두 가지 부류가 있다.
설계를 머리에 이고 키보드 부터 두드리는자,
그리고 UML부터 그려가며 말과 글과 그림그리며 오감으로 개발을 시작하는 자.
다들 안다. 후자가 고수의 길이며 정도라고..
하지만 난 늘 전자의 유혹에 무릎을 꿇는다..
후자 스타일이라면 먼저 PhoneGap 이 무언지 부터 살펴보자
http://phonegap.com/

시작하기
http://phonegap.com/start#android

1.요구사항
- 이클립스 3.4 이상 필요하단다 찾아보니 Ganymede 이상이면 될듯하다. 아직도 난 정식명칭이 궁금 가니메데? 개니메드? 가나이메드? ㅋ
- 이클립스를 사용하지 않는 이 듀토리얼의 터미널 버전 - 이건 무슨말인지 모르겠다;

2. SDK 설치 + PhoneGap
- 이클립스 받아 설치
- 안드로이드 SDK 받아 설치
- ADT 까지 받아 설치, 여기까지는 기존에 안드로이드 개발을 했던 분이라면 이미 준비되어 있을거라 생각된다.
- PhoneGap 최신 버전을 받아서 압축을 풉니다. 이 압축 푼 내용을 안드로이드 디렉토리와 함께 작업할 껍니다. 나는 다른 라이브러리 처럼 플러인이나 라이브러리 path를 잡아줘야 되는 줄 알았다.
하지만 내용을 보면 알겠지만 jar, js, htm 이 들어 있어 안드로이드 소스에 직접 복사해서 넣는 방법을 쓰며 배포시 패키지 만들때 포함되어 릴리즈 되는 것 같다.

3. 새 프로젝트 만들기
- New>Android Project 로 실제 Helloworld 안드로이드 프로젝트를 만든다.
- 버전선택을 맘대로 정한다. 테스트로 2.2
- 앱네임과 패키지 명, 메인 액티비티 명을 이름 짓는다.
- 최소 sdk 버전은 써도 안써도 좋다. 2.2로 정했다면 2.2의 api 레벨인 8로 테스트로 세팅한다.
여기까지는 기존에 안드로이드 개발해보신 분이라면 무난히 수월하게 따라 왔으리라고 본다.
이 후에 설정 작업이 재미있다.
- 여러분이 만든 Helloworld 프로젝트 루트 디렉토리에 다음과 같이 /libs  디렉토리를 만들고 기존에 있는 /assets 디렉토리 밑에 /www 디렉토리를 새로 만든다. 그러면 /libs , /assets/www  두 개의 디렉터리가 만들어진다.
- 아까 다운로드 받아 압축 풀어놨던 파일들 중에 android 디렉토리 안에 phonegap.js 파일을 /assets/www 에 복사해 붙여 넣는다.
- phonegap.jar 파일을 /libs 디렉토리 안에 복사하기 해서 붙여 넣는다.
- 마지막으로 이번엔 xml 디렉토리 전체를 복사하여 /res 디렉토리에 붙여넣는다.
- 이제 만들었던 메인 액티비티 소스를 고쳐보자. 
- 고치기에 앞서서 추가했던 jar를 프로젝트 path에 설정해주자. 프로젝트명 오른쪽 마우스 클릭해 Properties를 선택하여 java build path를 살펴보면 Libraries 탭을 설정해서 Add JARs를 선택해 현재 프로젝트에 속해있는 phonegap.jar 파일을 선택해 포함시킨후 확인 저장한다.
- 다음으로 소스를 고친다 이미 기본으로 생성된 소스를 다음과 같이 수정한다.
- Activity 로 extends된 클래스를 DroidGap으로 바꾼다.
- 뷰를 그려주는 역할을 하는 setContentView() 대신 super.loadUrl("file://android_asset/www/index.htm"); 으로 설정한다. 해당 index.htm 은 조금 있다 만들겠다. file:///android_asset 은 루트의 기본 디렉토리인 /assets 를 말합니다.
- ctrl + o 를 눌러서 import com.phonegarp.*; 이 추가되고 import android.app.Activity;는 제거됩니다.
- 그리고 환경설정파일인 AndroidManifest.xml 파일에 버전정보 다음으로 아래 내용을 추가합니다. 아래는 제 소스 샘플입니다.

<?xml version="1.0" encoding="utf-8"?>
 
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.binsolb.phonegap.helloworld"
      android:versionCode="1"
 
      android:versionName="1.0">
 
  <supports-screens
android:largeScreens="true"
 
android:normalScreens="true"
 
android:smallScreens="true"
 
android:resizeable="true"
 
android:anyDensity="true"
 
/>
<uses-permission android:name="android.permission.CAMERA" />
 
<uses-permission android:name="android.permission.VIBRATE" />
 
<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.READ_PHONE_STATE" />
 
<uses-permission android:name="android.permission.INTERNET" />
 
<uses-permission android:name="android.permission.RECEIVE_SMS" />
 
<uses-permission android:name="android.permission.RECORD_AUDIO" />
 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
 
<uses-permission android:name="android.permission.READ_CONTACTS" />
 
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 
<uses-permission android:name="android.permission.GET_ACCOUNTS" 
/>
 
<uses-sdk android:minSdkVersion="8" />
 
    <application android:icon="@drawable/icon" android:label="@string/app_name">
 
        <activity android:name=".HelloActivity"
                  android:label="@string/app_name"
 
                  android:configChanges="orientation|keyboardHidden">
 
            <intent-filter>
 
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
 
            </intent-filter>
 
        </activity>
 
    </application>
 
</manifest>


- 그리고 다음의 회전설정도 추가해줍니다.

4. Hellow World htm 만들기
-앞서 말씀드렸던 htm파일을 만듭니다. 위치는 /assets/www  아래에 index.htm  파일을 아래와 같이 만듭니다.

<!DOCTYPE HTML>
<html>
<head>
<title>PhoneGap</title>
<script type="text/javascript" charset="utf-8" src="phonegap-1.3.0.js"></script>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>

- 스크립트 파일 명은 복사 해 넣은 버전의 파일명 그대로 쓰시면됩니다. 위는 제 샘플입니다.
5 배포합니다.
- 시뮬레이터로 배포 또는 디바이스로 배포를 합니다.
- Run as > Android Application 선택으로 실행시킵니다.

6. 결과 확인


잘나오는 군요 뿌듯합니다 이제 간단히 tv팟을 만들어봐야겠어요!


*혹시 잘 모르시는 분은 좀더 자세한 설명의 아래 페이지를 참고하세요~
http://wiki.phonegap.com/w/page/30862722/phonegap-android-eclipse-quickstart

Posted by 다오나무
영삼이의 IT정보2011. 11. 11. 19:01

스크립트를 이용하는방법
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
// [/iPhone/i]  OS가 iPhone
// [/iPod/i]  OS가 iPod
// [/Symbian/i]  OS가 심비안
// [/Windows CE/i] OS가 윈도우모바일
// [/BlackBerry/i] OS가 블랙베리 
// [/Android/i]  OS가 안드로이드일 경우
if( (navigator.userAgent.match(/iPhone/i)) ||
(navigator.userAgent.match(/iPod/i)) ||
(navigator.userAgent.match(/Symbian/i)) ||
(navigator.userAgent.match(/Windows CE/i)) ||
(navigator.userAgent.match(/BlackBerry/i)) ||
(navigator.userAgent.match(/Android/i)))
{
window.location.href='./photo.php'; // 저중 하나라도 조건이 만족하면 /m/index.php 로 이동한다.

//-->
</SCRIPT>

php를 이용하는방법
<?
$T = $_SERVER['HTTP_USER_AGENT'];
if(strrpos($T,"Android") || strrpos($T,"iPhone"))
{
if(strrpos($T,"SHW-M180S")) // 갤럭시 탭
{
  $goMobile = "No";
}
else
{
  $goMobile = "Yes";
}
}

if($goMobile == "Yes")
{
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
  window.location.href='m1.php';
//-->
</SCRIPT>
<?
}
?>
먼저 $T로 브라우져의 정보를 알아낸다음...
그것으로 처리 하면 된다.

Posted by 다오나무
영삼이의 IT정보2011. 10. 26. 03:48


노트북 사용시 기존에 있는 고가의 키패드 제품 대신 스마트폰에 블루키패드 앱을 설치함으로써 보다 저렴하게 숫자키패드를 이용하실수 있습니다.
- 앱으로 구현하여 어디서나 사용가능
- 프리젠테이션 무선 리모컨 기능
- 저렴한 가격에 키패드 사용
- 다양한 기능, 스킨 업데이트 예정
1) 따로 휴대할 필요가 없는 키패드!
앱으로 구현하여 따로 숫자 키패드를 들고 다니는 번거로움이 사라집니다.
또 저렴한 가격대로 부담없이 사용 하실수 있습니다.
2) 숫자키패드만 되는 키패드는 가라!
추후 계산기 기능등을 업데이트 할 예정!
3) 키패드 스킨 업데이트 예정!
다양한 디자인으로 스킨을 적용해서 기분 및 취향에 따라 사용하도록 추가 예정
서버프로그램 윈도우7 및 윈도우XP 프로그램은 http://www.bluekeypad.net 에서 다운 받으셔서 설치후 이용하시면 됩니다.
개발사 : 앱툴즈 http://www.apptools.net
개발참여 : 이경용, 채덕병, 문기석, 정은아

티스토어 : http://tstore.co.kr/userpoc/game/viewProduct.omp?insProdId=0000239180
올레마켓 : http://market.olleh.com/appDetail?ptype=C&pid=51200005301596
오즈스토어 : http://adp.uplus.co.kr:8002/web/appraisal/appraisal_main.dn?pid=Q04010032629

구글마켓 : https://market.android.com/details?id=net.db.Bluetooth_HID

개발스토리 :

숫자 키패드가 없는 넷북 등은 엑셀 등에서 숫자 입력시 불편하다. 그래서, 숫자 키패드를 추가 구입해서 사용하곤 하는데 USB케이블이 불편해서 블루투스 키패드를 선호하게 됩니다. 하지만 블루투스 제품의 경우 대부분 9만원~15만원 이상의 고가 제품이라 선뜻 구입하기가 힘들어 집니다. 뿐만 아니라 항상 별도로 휴대 해야 하는 번그로움까지 생깁니다.

하지만 본 앱을 이용시 스마트폰과 블루키패드 앱만 있으면 언제든지 숫자 키패드를 사용 가능합니다.

홈페이지 : http://www.bluekeypad.net

티스토어 QR코드 :

올레마켓 QR코드 :

오즈스토어

구글마켓 QR코드 :

klt0537 2011-08-05 13:23
키패드있는 노트북을 쓰기좋아하는데 어쩔수없이14인치를 사서 키패드가 없는걸 구매했었죠. 검색해보니 이런게 있으더군요ㅎㅎ 일단 먼저 디자인이 마음에 들고요 잘쓸께요ㅎㅎ

klosno12 2011-07-28 13:26
오호 안그래도 키패드 살려고했는데 잘사용 할께요 고마워요

010-****-9839 2011-07-28 13:21
마침 숫자 키패드가 필요 했는데 정말 좋네요 usb키패드 보다 가격도 훨씬 저렴하구 프리젠테이션 할때도 사용할수있네요 굳!!!

Posted by 다오나무