세미나: Korea*Japan Developer's Summit 2011, 2011.6.28

2011년 6월 29일 오후 7시부터 강남역 인근 성공가계 별관 4층에서 앱센터 운동본부 주관으로 한국과 일본의 iPhone/Android 등의 스마트폰 개발자 들이 모여 양국의 애플리케이션 마켓과 프로모션의 특징에 대해서 이야기 합니다.
  • 세미나 명 : Korea*Japan Developer's Summit 2011
  • 일시 : 2011년 6월 29일 오후 7시 ~ 9시
  • 장소: 서울 강남역 인근 성공가계 별관 4층
  • 신청 : hwpark0515@hotmail.com으로 회사명, 참가자 성함, 직책, 핸드폰, 사업 내용 을 기입하여 메일로 신청
  • 주제
    -   한국 iTunes 앱스토어의 시장 규모와 특징 분석
    -   Global and Japan Smartphone apps and Advertising Martket
    -  일본의 어플리케이션 시장과 마케팅 방법에 대해
    -  패널 토의


오픈소스 비즈니스 컨설팅


Posted by 산사랑

2011/06/28 09:46 2011/06/28 09:46
, , , , , , , , , ,
Response
A trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/345

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/345

Trackbacks List

  1. mobile phone apps on pc

    Tracked from mobile phone apps on pc 2013/05/18 15:58 Delete

    오픈소스 비즈니스 컨설팅 :: 세미나: Korea*Japan Developer's Summit 2011, 2011.6.28

Leave a comment
[로그인][오픈아이디란?]

브라우저별 HTML5 지원 점수 변천사

브라우저별로 HTML5 지원 점수를 살펴 보았습니다.

일반 웹 환경에서는 IE를 제외하고는 대부분이 300점 만점에 250점 이상이고
모바일 환경에서는 300점 만점에 170점 이상 이군요.

HTML5 지원 점수 현황

*** 참고 문헌 ***

Posted by 산사랑

2011/03/30 12:26 2011/03/30 12:26
, , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/320

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/320

Leave a comment
[로그인][오픈아이디란?]
Android에서 JSON 데이터를 송수신하기 위해서 HttpURLConnection을 사용하여 만든 함수 입니다.

  • serverURL : JSON 요청을 받는 서버의 URL
  • postPara : POST 방식으로 전달될 입력 데이터
  • flagEncoding : postPara 데이터의 URLEncoding 적용 여부
  • 반환 데이터 : 서버에서 전달된 JSON 데이터

    public static String getJson(String serverUrl, String postPara, boolean flagEncoding) throws Exception {
        URL url = null;
        HttpURLConnection conn = null;
        PrintWriter postReq = null;
        BufferedReader postRes = null;
        StringBuilder json = null;
        String line = null;
        
        json = new StringBuilder();
        try {
            if (flagEncoding) {
                postPara = URLEncoder.encode(postPara);
            }
            
            url = new URL(serverUrl);
            conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setUseCaches(false);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "text/plain");
            conn.setRequestProperty("Content-Length",
                                                       Integer.toString(postPara.length()));
            conn.setDoInput(true);
            
            postReq = new PrintWriter(
                              new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
            postReq.write(postPara);
            postReq.flush();
            
            postRes = new BufferedReader(
                             new InputStreamReader(conn.getInputStream(), "UTF-8"));
            while ((line = postRes.readLine()) != null){
                json.append(line);
            }
            conn.disconnect();
        } catch (MalformedURLException ex) {
            throw new Exception(ex.getMessage());
        } catch (IOException ex) {
            throw new Exception(ex.getMessage());
       } catch (Exception ex) {
            throw new Exception(ex.getMessage());
       }
        return json.toString();    
    }


Posted by 산사랑

2011/03/08 00:40 2011/03/08 00:40
, , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/304

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/304

Leave a comment
[로그인][오픈아이디란?]
임직원 정보, 동호회 인명록 등을 관리할 수 있는 SmartContact을 안드로이드 마켓에 올려 두었습니다.

데모 (reader) 사용자로 연락처 조회를 데모 (writer) 사용자로 연락처 등록 및 수정을 테스트해 볼 수 있습니다.

SmartContact 개요

스마트 연락처(SmartContact)는 임직원 정보, 동호회 인명록, 동문회 회원 정보 등의 공용 연락처를 클라우드 기반으로 관리 합니다. 관리자(writer) 권한을 가진 사용자가 연락처 정보를 등록하면 사용자(reader) 권한을 가진 사용자가 해당 연락처를 공유할 수 있습니다. 클라우드는 Google App Engine을 사용 하였으며, 다수의 클라우드를 등록하여 사용할 수 있는 구조로 되어 있습니다. 현재는 Default 클라우드만 사용이 가능하지만 자신만의 Google App Engine을 설정하여 사용할 수 있습니다.

  • 스마트 연락처 QRCode
  • market://details?id=com.jopenbusiness.android.smartcontact
  • Android 폰에서 QRCode Reader (스캐니, 다음 등)로 아래 QRCode를 읽어 설치할 수 있습니다.

그림:Qrcode SmartContact.png

  • SmartContact을 위한 Cloud 서비스
  • Google App Engine for Java로 구현된 SmartyContact 클라우드 서비스와 연동하여 연락처 정보를 관리함
  • 스마트 연락처 Screen

그림:SmartContact 01.png 그림:SmartContact 02.png

사용자 매뉴얼

  • "+" 버튼 : 현재 설정에서 지정되어 있는 Cloud에 연락처(Contact)를 추가 합니다.
  • "검색" 버튼 : 이름, 전화번호, 이메일, 주석 등으로 연락처를 검색 합니다.
  • 목록에 표시되는 항목 선택
  • 연락처의 상세 화면을 표시 합니다.
  • 연락처의 상세 화면에서 핸드폰으로 전화걸기, 문자 메시지 보내기, 회사로 전화걸기, 이메일 보내기를 할 수 있습니다.

Context 메뉴 (목록에 표시되는 항목을 오래 누르면 표시되는 메뉴)

  • 핸드폰으로 전화걸기
  • 문자 메시지 보내기
  • 회사로 전화걸기
  • 이메일 보내기
  • 연락처 수정
  • 선택한 연락처에 대한 수정 권한이 있으면, 연락처 수정 화면을 표시 합니다.
  • 연락처 삭제
  • 선택한 연락처에 대한 삭제 권한이 있으면, 연락처를 삭제 합니다.
  • 물리적으로 삭제되지는 않고 삭제 flag만 설정됩니다.

메뉴 (핸드폰에 있는 메뉴 버튼을 누르면 화면 하단에 표시되는 메뉴)

  • 동기화 : 등록된 모든 Cloud에 대해서 연락처 동기화를 진행 합니다.
  • 클라우드 선택 : Default Cloud를 선택할 수 있는 화면을 표시 합니다.
  • 설정 : Default로 선택된 Cloud의 정보를 설정하는 화면을 표시 합니다.
  • 정보 : SmartContact의 앱 정보 및 작성자 정보를 표시 합니다.

  • 마스터 클라우드 URL
  • 클라우드 명을 확인할 마스터 클라우드의 URL 입니다.
  • 현재는 smartycontact.appspot.com 만 존재 합니다.
  • 클라우드 명 : Cloud별로 유일한 ID
  • 이메일 : 클라우드 명으로 구분되는 Cloud에서 로그인 ID
  • 비밀번호 : 클라우드 명으로 구분되는 Cloud에서 로그인 ID에 해당하는 암호
  • 클라우드 동기화 정보
클라우드 명, 이메일, 비밀번호를 가지고 마스터 클라우드에서 확인한 클라우드의 상세 정보
  • 클라우드 URL : 클라우드가 있는 곳의 URL
  • 서비스 : 클라우드에서 사용할 서비스 명, 하나의 클라우드에는 여러개의 서비스가 존재 합니다.
  • 권한 : reader. 읽기 권한, writer. 쓰기 권한, admin. 관리 권한
  • 연락처 동기화 일자 : 연락처를 최종적으로 동기화한 일자를 보여 줍니다.
  • 삭제된 연락처 보기 : true이면 삭제 flag가 표시된 연락처도 보여 줍니다.

메뉴 (핸드폰에 있는 메뉴 버튼을 누르면 화면 하단에 표시되는 메뉴)

  • 클라우드 확인
  • 클라우드 명, 이메일, 비밀번호로 Cloud 동기화 정보를 가져 옵니다.
  • Default로 선택된 Cloud가 있을 경우, 해당 Cloud 정보를 수정 합니다.
  • Default로 선택된 Cloud가 없을 경우, 새로운 Cloud 정보를 등록 합니다.
  • 클라우드 선택 : Default Cloud를 선택할 수 있는 화면을 표시 합니다.
  • 데모 (reader) : 설정 정보를 reader 권한을 가진 데모 사용자로 설정하고 "클라우드 확인"을 합니다.
  • 데모 (writer) : 설정 정보를 writer 권한을 가진 데모 사용자로 설정하고 "클라우드 확인"을 합니다.
  • 정보 : SmartContact의 앱 정보 및 작성자 정보를 표시 합니다.

  • "+" 버튼 : 새로운 Cloud를 등록하는 화면을 표시 합니다.
  • "검색" 버튼 : 클라우드 명, 서비스, 이메일 등으로 Cloud를 검색 합니다.
  • 목록에 표시되는 항목 선택 : Cloud의 상세 화면을 표시 합니다.

Context 메뉴 (목록에 표시되는 항목을 오래 누르면 표시되는 메뉴)

  • 클라우드 선택 : 선택한 Cloud를 Default Cloud로 지정 합니다.
  • 삭제 : 선택한 Cloud를 삭제 합니다.
  • 연락처 초기화 : 선택한 Cloud에 해당하는 연락처를 핸드폰에서 모두 삭제 합니다.
  • 연락처 동기화 : 선택한 Cloud에 대해서 연락처 동기화를 진행 합니다.

메뉴 (핸드폰에 있는 메뉴 버튼을 누르면 화면 하단에 표시되는 메뉴)

  • 연락처 초기화 : 등록된 모든 Cloud에 해당하는 연락처를 핸드폰에서 모두 삭제 합니다.

  • 스마트 연락처 버전 x.xx.xxx
  • 스마트 연락처의 현재 버전을 표시 합니다.
  • 선택시 브라우저에서 스마트 연락처의 홈페이지(위키)를 표시 합니다.
  • 선택시 브라우저에서 스마트 연락처 작성자의 홈페이지를 표시 합니다.
  • android(골뱅이)jopenbusiness.com
  • 선택시 스마트 연락처 작성자에게 메일을 보낼 수 있습니다.

*** 참고 문헌 ***

Posted by 산사랑

2011/03/02 20:09 2011/03/02 20:09
, , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/313

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/313

Leave a comment
[로그인][오픈아이디란?]
Android는 Java로 되어 있어 Java에서 제공하는 기능을 사용하여 Thread를 구현할 수 있습니다. 그러나, 안드로이드 화면의 각 요소(View)에 정보를 표시한다든지 하는 UI와 관련된 작업을 하는 경우에는 여러가지 제약 사항이 따릅니다.

Google에서는 AsyncTask라는 것을 제공하여 Android에서 UI 작업과 관련된 Thread의 구현을 손쉽게 할 수 있도록 지원 합니다.


  Thread with AsyncTask


UI Thread를 구현하기 위해서는 해당 Thread가 Activity에서 구현이 되어야 하며, 주고 받는 인자들의 타입이 일치 하여야 합니다. 아래 설명에서는 서로 일치해야 하는 인자들의 경우에는 동일한 색으로 표시를 해서 구분 합니다.

* AsyncTask 호출 구현
private Activity activity = null;

activity = this;
(new theAsyncThread()).execute(para1, para2, para3);


*AsyncTask 구현
private class theAsyncThread extends AsyncTask<String, String, String> {
    //--- Thread를 시작하기 전에 호출되는 함수
    protected void onPreExecute() {
        if ((activity != null) && (activity.isFinishing() == false)) {
            Toast.makeText(activity, "Before thread", Toast.LENGTH_SHORT).show();
        }
        super.onPreExecute();
    }

    //--- Thread의 주요 작업을 처리 하는 함수
    //--- Thread를 실행하기 위해 excute(~)에서 전달한 값을 인자로 받습니다.
    protected String doInBackground(String... arg) {
        int argCnt = 0;
        
        argCnt = arg.length;
        if (argCnt != 3) {
            return "Error";
        }
        
        //--- onProgressUpdate(~) 실행하기 위해서는 아래 함수를 호출 합니다.
        publishProgress("Thread processing.");
        return "OK";
    }

    //--- doInBackground(~)에서 호출되어 주로 UI 관련 작업을 하는 함수
    protected void onProgressUpdate(String... progress) {
        if ((activity != null) && (activity.isFinishing() == false)) {
            Toast.makeText(activity, progress[0], Toast.LENGTH_SHORT).show();
        }
    }

    //--- Thread를 처리한 후에 호출되는 함수
    //--- doInBackground(~)의 리턴값을 인자로 받습니다.
    protected void onPostExecute(String result) {
        if ((activity != null) && (activity.isFinishing() == false)) {
            Toast.makeText(activity, "After thread", Toast.LENGTH_SHORT).show();
        }
        super.onPostExecute(result);
    }

    //--- AsyncTask.cancel(true) 호출시 실행되어 thread를 취소 합니다.
    protected void onCancelled() {
        super.onCancelled();
    }      
}    

*** 참고 문헌 ***


Posted by 산사랑

2011/01/14 20:40 2011/01/14 20:40
, , , , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/302

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/302

Leave a comment
[로그인][오픈아이디란?]

안드로이드 앱을 통한 apk 설치 방법

안드로이드 앱에 apk 파일을 내장하여, apk 파일을 설치하는 샘플 입니다.

* 설치할 앱의 저장 위치 : /res/raw/testapp.apk
intent = new Intent(Intent.ACTION_VIEW);
apkFile = rawToFile(
                  getResources().openRawResource(R.raw.daoubus), "testapp.apk");
intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
startActivity(intent);

* Raw Resource에 저장된 파일을 InputStream이 아닌 파일로 받는 함
  - /res/raw/에 있는 파일을 /sdcard/zztemp/ 폴더 아래에 복사한 후 해당 파일을 반환 한다.
  - /res/raw/에 있는 파일을 직접 반환할 수 있는 방법이 없기 때문에 이러한 방법을 사용 한다.
  - 권한 설정 : <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  - 호출 방법 : rawToFile(getResources().openRawResource(R.raw.raw명, "testapp.apk");
   public static File rawToFile(InputStream finp, String filename) {
	FileOutputStream fout = null;
   	File tmpFile = null;
	byte[] buf = null;
	int cntRead = 0;

   	tmpFile = new File(
           Environment.getExternalStorageDirectory() + "/zztemp");
   	if (!tmpFile.exists()) {
   		tmpFile.mkdir();
   	}

		buf = new byte[1024 + 1];
		try {
			fout = new FileOutputStream(
                            new File(tmpFile + "/" + filename));
			while (0 < (cntRead = finp.read(buf))) {
				fout.write(buf, 0, cntRead);
			}
		} catch (FileNotFoundException e1) {
			return null;
		} catch (IOException e) {
			return null;
		} finally {
			try {
				if (fout != null) {
					fout.close();
				}
			} catch (Exception e) {
				fout = null;
			}
			try {
				if (finp != null) {
					finp.close();
				}
			} catch (Exception e) {
				finp = null;
			}
		}
   	return new File(tmpFile + "/" + filename);
   }


*** 참고 문헌 ***

Posted by 산사랑

2011/01/06 20:29 2011/01/06 20:29
, , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/296

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/296

Leave a comment
[로그인][오픈아이디란?]

무료 안드로이드 앱: QR 명함

저는 2010년 7월(?)부터 갤럭시S를 쓰기 시작 했습니다. 갤럭시S가 안드로이드 기반이고 안드로이드는 Java로 이루어져 있기 때문에, 스마트폰을 사용하면서 내게 필요하지만 없는 것을 몇개 만들어 쓰고 있습니다.

SmartQRCode (QR 명함)도 그중에 하나로 스마트폰에서 QRCode로 명함을 만들어 표시해 줍니다. 스캐니 등의 QRCode Reader를 사용하여 손쉽게 명함 정보를 교환할 수 있습니다.

현재 안드로이드 마켓에 "QR 명함", "QR Card"라는 이름으로 무료로 등록되어 있습니다.
사용자 삽입 이미지

필요에 의해서 아주 간단히 만들었지만
주요 기능을 말씀드리면 다음과 같습니다.
  • 분류 지원 : Company, Community, Other (3종류의 명함을 지원)
  • 다양한 QRCode 종류 지원
    명함, 전화번호, 이메일, 사이트, 메모, Android Market
  • 다양한 QRCode 크기 지원
첫 화면에서 자신이 설정한 QRCode를 화면에 표시 합니다.
여기서 "분류"를 사용하여 명함의 종류를 변경하거나 QRCode의 종류와 크기를 변경할 수 있습니다. 단, 여기서 변경된 값은 저장되지 않습니다.

설정에서 3가지 명함에 들어갈 데이터를 저장할 수 있습니다. 최종 저장된 명함이 항상 첫화면에 표시되므로 첫 화면에 표시할 명함을 선택한 후, 마지막으로 저장 하세요.

설정된 값은 SharedPreferences를 사용하여 저장을 했더니, 좀 느려서 설정을 저장할 때 시간이 걸립니다. (좋은 방안이 있으면 알려 주세요.)

사용자 삽입 이미지
"브라우저로" 메뉴는 Google Apps Engine으로 만든 QRCode 생성 웹 화면을 연동해 두었습니다. "QR 명함"은 QRCode 생성 웹을 Android로 옮긴 것 입니다.

사용자 삽입 이미지

*** 참고 문헌 ***

Posted by 산사랑

2010/12/17 13:20 2010/12/17 13:20
, , , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/291

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/291

Leave a comment
[로그인][오픈아이디란?]

Android: Activity간 연동

하나의 Activity에서 다른 Activity를 호출할 때, Intent를 사용하여 값을 전달할 수 있다. 마찬가지로 호출된 Activity는 Intent를 사용하여 값을 반환할 수 있다. 여기서는 startActivityForResult를 사용하여 두 Activity간 연동하는 방법을 살펴 보자.

호출하는 Activity를 A Activity라고 하고 호출받는 Activity를 B Activity라고 해보자.

  • A Activity에서 B Activity 호출
  • A Activity 구현
  • startActivityForResult(Intent intent, int requestCode) : requestCode로 어떤 activity에서 호출했는지 확인 가능
Intent intent = new Intent(getApplicationContext(), SettingActivity.class);
intent.putExtra("data", "전달하는 값"); //--- 전달할 값 저장
startActivityForResult(intent, 1);
  • B Activity 구현
String data = getIntent().getStringExtra("data");     //--- 전달받은 값
  • B Activity에서 A Activity로 반환
  • B Activity 구현
  • setResult(resultCode) 또는 setResult(resultCode, Intent data)으로 결과 반환
  • resultCode : Activity.RESULT_OK, Activity.RESULT_CANCELED 등
  • 주의 : "이전 메뉴" 메뉴를 선택하면 Activity.RESULT_CANCELED 가 반환 된다.
  • 일반적으로 protected void onPause() 에서 구현 한다.
Intent result = new Intent();
result.putExtra("result", "반환하는 값"); //--- 반환하는 값 저장
setResult(Activity.RESULT_CANCELED, result);
  • A Activity 구현
//--- 호출 받은 앱에서 결과값을 반환했을 때, 처리하는 함수
//--- 주의 : "이전 메뉴" 메뉴를 선택하면 Activity.RESULT_CANCELED 가 반환 된다.
public void onActivityResult(int requestCode, int resultCode, Intent data) {
String result = null;

super.onActivityResult(requestCode, resultCode, data);
switch (resultCode) {
case Activity.RESULT_OK:
break;
case Activity.RESULT_CANCELED:
//--- requestCode로 어떤 Activity에서 반환되었는지 확인 한다.
if (requestCode == 1) {
if (data != null) {
result = data.getStringExtra("result"); //--- 반환된 값
if ((result != null) && (result.equals("error"))) {
finish();
}
}
}
break;
}
}

*** 참고 문헌 ***

Posted by 산사랑

2010/12/16 13:26 2010/12/16 13:26
, , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/288

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/288

Leave a comment
[로그인][오픈아이디란?]

Android: 화면 회전 (Rotation)

안드로이드 앱을 개발할 때, 가장 복잡하고 까다로운 것은 화면의 회전에 따른 데이터 처리일 것이다. 모바일 앱을 개발하면서 조금씩 정리해 둔 것을 풀어 본다.

화면 회전

  • Resource에서 화면(layout) 정의
  • 세로 화면 : /res/layout-port/~.xml
  • 가로 화면 : /res/layout-land/~.xml
  • 회전 상태 확인
  • Android 2.1
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

//--- orientation : 0. 세로, 1. 가로
int orientation = display.getOrientation();
  • Android 2.2
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

//--- Surface.ROTATION_0   : 세로
//--- Surface.ROTATION_90  : 가로
//--- Surface.ROTATION_180 : 세로
//--- Surface.ROTATION_270 : 가로
int rotation = display.getRotation();
  • 화면 회전 금지 방법 1
  • AndroidManifest.xml에서 모든 Activity에 다음을 추가 한다.
android:screenOrientation="portrait"       //--- 세로 화면 고정
android:screenOrientation="landscape"      //--- 가로 화면 고정
  • 화면 회전 금지 방법 2
//--- public void onCreate(Bundle savedInstanceState) 함수에서
//--- setContentView(~); 다음에 아래 라인을 추가 한다.

//--- 세로 화면 고정
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//--- 가로 화면 고정
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  • 화면이 회전해도 Activity가 다시 로딩되지 않도록 하는 방법
  • Activity가 다시 로딩되지 않으므로 화면의 크기는 변하지 않는다. 따라서 수작업으로 화면을 조정해 주어야 한다.
  • AndroidManifest.xml에서 모든 Activity에 다음을 추가 한다.
android:configChanges="keyboardHidden|orientation"
  • 모든 Activity에 다음을 추가 한다.
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    switch(newConfig.orientation) {
        case Configuration.ORIENTATION_PORTRAIT:   
            //--- 수작업으로 세로 화면 생성 break; case Configuration.ORIENTATION_LANDSCAPE:
            //--- 수작업으로 가로 화면 생성 break; } }
  • 화면 회전시 정보를 저장한 후 복구하는 방법
  • public void onCreate(Bundle savedInstanceState)에 복구와 관련된 코딩을 한다.
Object obj = getLastNonConfigurationInstance()
if (obj != null) {
    HashMap<String, Object> map = (HashMap<String, Object>) obj;
    //--- 저장된 복구 데이터로 화면 또는 Thread를 복구 한다.
}
  • public void onDestroy()에 화면 종료와 관련된 코딩을 한다.
public void onDestroy() {
   if (isFinishing()) {
   	 //--- 화면이 종료될 때, Thread 처리 등을 한다.
 	 //---   worker.interrupt();
        //---   worker = null;
    } else {
      	 //--- 화면이 회전할 때
    }
    super.onDestroy();
}
  • public Object onRetainNonConfigurationInstance()에 화면 회전시 데이터를 저장하는 코딩을 한다.
public Object onRetainNonConfigurationInstance() {
    HashMap<String, Object> map = null;

    map = new HashMap<String, Object>();
    //--- 화면 또는 Thread에서 복구할 데이터를 저장 한다.
    return map;
}
  • 참고 문헌

*** 참고 문헌 ***

Posted by 산사랑

2010/11/08 21:41 2010/11/08 21:41
, , , , , , , , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/282

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/282

Leave a comment
[로그인][오픈아이디란?]

인증된 Android App 작성하기

안드로이드 마켓에 앱을 배포하기 위해서는 인증된 apk를 작성해야 합니다. 이제 자신만의 앱을 만들어 배포해 봅시다.

인증된 apk 작성

주의: 안드로이드 앱은 Package 명으로 구분되니 서로 다른 Android App을 Android Market에 배포하려면 서로 다른 Package 명을 사용 하여야 한다.

  • Eclipse에서 apk 작성을 원하는 Android Project에서 AndroidManifest.xml 파일은 연다.
  • 하단의 "Use the Export Wizard to export and sign an APK" 링크를 선택 한다.
apk 작성
  • APK를 작성할 프로젝트를 선택한 후 "Next" 버튼을 누른다.
Project 선택


  • keystore를 지정 한다.
  • keystore가 있을 경우 해당 keystore를 선택 한다.
  • keystore가 없을 경우 생성할 keystore 명을 지정하고 암호를 입력한 후 "Next" 버튼을 누른다.
keystore 지정


  • Key 생성을 위한 필요한 정보를 입력한 후 "Next" 버튼을 눌러 keystore를 생성 한다.
key 생성


  • 생성한 apk 명을 지정하고 "Finish" 버튼을 눌러 apk 파일을 생성 한다.
apk 생성


  • 탐색기로 해당 폴더에 가면 생성된 keystore와 apk 파일을 볼 수 있다.
Android_apk_106.png

*** 참고 문헌 ***

Posted by 산사랑

2010/11/02 23:18 2010/11/02 23:18
, , , , , , , ,
Response
No Trackback , No Comment
RSS :
http://www.jopenbusiness.com/tc/oss/rss/response/278

Trackback URL : http://www.jopenbusiness.com/tc/oss/trackback/278

Leave a comment
[로그인][오픈아이디란?]

블로그 이미지

개인적인 글쓰기와 오픈소스 비즈니스 컨설팅 관련 글을 정리합니다. consult (골뱅이) jopenbusiness.com

- 산사랑

Archives

12명이 RSS를 구독하고 있습니다.

Site Stats

Total hits:
516682
Today:
82
Yesterday:
194

*** 방문자 통계 ***
0513 : (178)
0514 : (163)
0515 : (195)
0516 : (182)
0517 : (177)
0518 : (194)
0519 : (82)
7일간 총 방문자수 : 1089