SlideShare a Scribd company logo
Python on Android
정보기술 시대에 유익한 파이썬 프로그래밍 – 제 10 강 (2)
동양미래대학교
2015.7
최용 <sk8er.choi@gmail.com>
주제
• Scripting Layer for Android (SL4A) 소개
• Android 실습 환경 준비
• SL4A와 Python (or QPython) 설치
• Python Shell 실습
• Python Script 실습
Scripting Layer for Android
(SL4A) 소개
Scripting Layer for Android (SL4A) 소개
• Android에서 다양한 스크립트를 실행할 수 있도록 하는 라이브러리
• Google의 20% 프로젝트로 시작
• ASE(Android Scripting Environment)에서 SL4A(Scripting Layer for Android)로 명칭 변경
• 실험적인 구현임
• 여러 스크립트 언어를 사용할 수 있음
• Python (CPython)
• Perl
• Ruby
• Lua
• …
• https://code.google.com/p/android-scripting/ (closed)
• https://github.com/damonkohler/sl4a
• https://github.com/kuri65536/sl4a (forked)
SL4A Architecture
Android Operating Platform
(Dalvik VM)
Scripting Layer for Android
(SL4A)
import android
droid = android.Android()
text = "Hello toast!"
droid.makeToast(text)
hello.py
Hello toast!
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
SL4A Architecture
Android Operating Platform
(Dalvik VM)
Scripting Layer for Android (SL4A)
Client
(Python)
SL4A RPC Server
(Android Java Application)
Client
(Perl)
Client
(Lua)
…
SL4A
AndroidProxy & Façades
AndroidProxy
Android Operating
Platform
TextToSpeechFaçade
SmsFaçade
class Android(object):
def _rpc(self, method, *args):
data = {'id': self.id, 'method': method,'params': args}
request = json.dumps(data)
response = self.client.readline()
result = json.loads(response)
return Result(id=result['id'], result=result['result'],
error=result['error'], )
android.py
@Rpc(description = "Displays a short-duration Toast notification.")
public void makeToast(@RpcParameter(name = "message") final String message) {
mHandler.post(new Runnable() {
public void run() {
Toast.makeText(mService, message, Toast.LENGTH_SHORT).show();
}
});
}
AndroidFacade.java
Android API
CameraFaçade
AndroidFaçade
JSON, RPC
Android 실습 환경 준비
실습 환경 비교
SL4A + Py4A
(apk 설치)
QPython / QPython3
(Play 스토어)
actual Android Phone 좋음
(설치 번거로움)
Best!
virtual Android Emulator 절반의 성공
(= FAIL = 삽질)
Not tested
(Play 스토어?)
VMWare(or VirtualBox)
+ android-x86
Not tested Not tested
BlueStacks Not tested
(apk 설치?)
좋음
(설치와 사용 편리.
SL4A 오류 발생 )
Android 실습 환경 준비
• #1 안드로이드 폰
또는
• PC 상의 가상(Virtual) 환경
• #2 안드로이드 에뮬레이터(Android Studio에 포함)
또는
• #3 VMWare + android-x86
또는
• #4 BlueStacks App Player
#1 Android Phone
#2 Android Emulator
• Java Development Kit (JDK) 설치
http://www.oracle.com/technetwork/java/javase/downloads/index.html
• Android Studio
• 다운로드 및 설치 https://developer.android.com/sdk/index.html
• Virtual Device 생성
• SD 카드 사용 설정
%HOME%.androidavd<장치 이름>config.ini 파일
hw.sdCard=yes 로 변경
#3 android-x86
• 하이퍼바이저
• VMWare Player https://www.vmware.com/go/downloadplayer
• VirtualBox https://www.virtualbox.org/wiki/Downloads
• Android-x86 http://www.android-x86.org/
• Live CD
• Installation
http://visualgdb.com/tutorials/android/vmware/ 참고
• Pre-installed Image http://www.mininova.org/tor/13278096/
#4 BlueStacks App Player
• 안드로이드 앱을 PC(Win, Mac)에서 사용할 수 있는 가상 환경
• 무료 설치, 월 사용료를 지불하거나 스폰서 앱 설치
• http://www.bluestacks.com/download.html
SL4A와 Python (or QPython) 설치
SL4A와 Python (or QPython) 설치
• #1 SL4A와 Python 설치
• SL4A
• https://github.com/kuri65536/sl4a/releases에서
sl4a-r6x05-x86-debug.apk 다운로드하여 설치하거나,
• Android SDK의 adb 사용하여 설치 가능
> cd %HOME%AppDataLocalAndroidsdkplatform-tools
> adb install "%HOME%"Downloadssl4a-r6x05-x86-debug.apk
• Python-for-android
• https://code.google.com/p/python-for-android/downloads/ 에서
Python3ForAndroid_r6.apk 다운로드하여 설치하거나,
• > adb install "%HOME%"DownloadsPython3ForAndroid_r6.apk
• 폰에서 “Python3 for Android” 실행 – Install 터치
또는
• #2 Play 스토어에서 QPython 설치
Qpython – Python on Android
• Python 2(QPython) & 3(QPython3)
• 콘솔(Shell)
• 편집기
• QPyPi
http://qpython.com/
Hello, Android!
1. Start button
2. Run script
3. hello_world.py
Python Shell 실습
QPython – Console
콘솔 추가로 열기
설정
콘솔 창 선택
makeToast()
>>> import android
>>> droid = android.Android()
>>> droid.makeToast("Hello")
Result(id=1, result=None, error=None)
• SL4A API 호출 결과(Result)
• id
숫자값, 처음 호출하면 1,
호출할 때마다 1씩 증가
• result
API 호출 결과.
값이 있으면 JSON 형식으로,
값이 없으면 null(None)
• error
오류 발생 내역.
오류가 없으면 null(None)
vibrate()
>>> droid.vibrate()
Result(id=2, result=None, error=None)
getLaunchableApplications()
>>> droid.getLaunchableApplications()
Result(id=3, result={'Swift HD Camera': 'com.stark.gadgets.swift.hd.camera.
CameraActivity', 'SetupWizard': 'com.bluestacks.setup.SetupWizardActivity',
...
}, error=None)
>>> import pprint
>>> apps = droid.getLaunchableApplications()
>>> pprint.pprint(apps.result)
{'1Mobile Market': 'me.onemobile.android.LaunchActivity',
'AppFinder': 'com.bluestacks.appfinder.AppFinder',
'AppSettings': 'com.bluestacks.appsettings.Main',
...
'트위터': 'com.twitter.android.StartActivity'}
Python Script 실습
QPython – Editor (QEdit)
들여쓰기
행 번호로 이동
저장
다른 이름으로
저장
undo
실행
찾기
옵션
Snippets
최근 파일 열기
들여쓰기
열기
새 파일
QPython – Scripts
• Scripts • Projects
샘플 스크립트 – hello_world.py
import sl4a
droid = sl4a.Android()
droid.makeToast('Hello, Android!')
print('Hello world!') Toast: 작은 팝업으로서 나타나는 간단한 피드백
http://developer.android.com/guide/topics/ui/notifiers/toasts.html
샘플 스크립트 – take_picture.py
import sl4a
droid = sl4a.Android()
droid.cameraInteractiveCapturePicture('/sdcard/qpython.jpg')
샘플 스크립트 – say_time.py
import sl4a
import time
droid = sl4a.Android()
droid.ttsSpeak(time.strftime("%I %M %p on %A, %B %e, %Y"))
%I Hour (12-hour clock) as a zero-padded decimal number.
%M Minute as a zero-padded decimal number.
%p Locale’s equivalent of either AM or PM.
%A Weekday as locale’s full name.
%B Month as locale’s full name.
%e day of the month (1 to 31)
%Y Year with century as a decimal number.
httpserver.py
try:
import SimpleHTTPServer as server # for Python 2
except:
import http.server as server # for Python 3
import os
os.chdir('/sdcard/')
server.test(HandlerClass=server.SimpleHTTPRequestHandler)
http://tututen.hatenablog.jp/entry/2014/01/09/121428 참고
httpserver.py 실행 결과
웹 브라우저에서 http://0.0.0.0:8000/ GET
httpserver.py 실행 결과 (index.html)
<html>
<head>
<title>Hello</title>
</head>
<body>
Welcome to my phone!
</body>
</html>
And More …
• 책 바코드 찍어서 검색하기
https://www.mattcutts.com/blog/android-barcode-scanner/
• Random joke 가져와서 친구들에게 문자 메시지 보내기
http://h3manth.com/content/sms-android-using-python
• 약정 벗은 안드로이드, 서버가 되다
http://www.zdnet.co.kr/column/column_view.asp?artice_id=201
20518070549
참고 자료
• 웹사이트
• https://github.com/damonkohler/sl4a
• https://code.google.com/p/python-for-android/
• https://groups.google.com/forum/#!forum/android-scripting
• http://wiki.qpython.org/doc/
• SL4A API Help http://www.mithril.com.au/android/doc/
• Android applications using Python and SL4A
http://www.ibm.com/developerworks/library/mo-python-sl4a-1/
• 책
• Lucas Jordan 외, Practical Android Projects, Apress
• Paul Ferrill 저, 류광 역, 프로 안드로이드 SL4A: 파이썬으로 안드로이드 앱 만
들기, 와우북스

More Related Content

What's hot (20)

PDF
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
NAVER D2
 
PPTX
빠르게 활용하는 파이썬3 스터디(ch1~4)
SeongHyun Ahn
 
PDF
12. Application - Python + Pandas
merry7
 
PDF
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
Kyoungchan Lee
 
PDF
Writing Fast Code (KR)
Younggun Kim
 
PPTX
Openface
jaeho kang
 
PPTX
딥러닝(Deep Learing) using DeepDetect
Junyi Song
 
PDF
[NDC08] 최적화와 프로파일링 - 송창규
ChangKyu Song
 
PPTX
Python 웹 프로그래밍
용 최
 
PDF
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
NAVER D2
 
PDF
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
NAVER D2
 
PDF
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Mario Cho
 
PPTX
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
Jaeseung Ha
 
PPTX
What is spark
jaeho kang
 
PDF
20150306 파이썬기초 IPython을이용한프로그래밍_이태영
Tae Young Lee
 
PPTX
TenforFlow Internals
Kiho Hong
 
PDF
병렬프로그래밍과 Cuda
Seok-joon Yun
 
PPTX
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
Seunghwa Song
 
PDF
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Esun Kim
 
PDF
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
Tae Young Lee
 
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
NAVER D2
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
SeongHyun Ahn
 
12. Application - Python + Pandas
merry7
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
Kyoungchan Lee
 
Writing Fast Code (KR)
Younggun Kim
 
Openface
jaeho kang
 
딥러닝(Deep Learing) using DeepDetect
Junyi Song
 
[NDC08] 최적화와 프로파일링 - 송창규
ChangKyu Song
 
Python 웹 프로그래밍
용 최
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
NAVER D2
 
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
NAVER D2
 
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Mario Cho
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
Jaeseung Ha
 
What is spark
jaeho kang
 
20150306 파이썬기초 IPython을이용한프로그래밍_이태영
Tae Young Lee
 
TenforFlow Internals
Kiho Hong
 
병렬프로그래밍과 Cuda
Seok-joon Yun
 
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
Seunghwa Song
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Esun Kim
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
Tae Young Lee
 

Similar to Python on Android (20)

PDF
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
Code Engn
 
PPT
Android발표자료 홍종진
Jong Jin Hong
 
PDF
[NEXT] Flask 로 Restful API 서버 만들기
YoungSu Son
 
PDF
Exynos4210 beginnerrev10
mimul
 
PDF
안드로이드 빌드: 설탕없는 세계
Leonardo YongUk Kim
 
PPTX
Open Source Engineering V2
YoungSu Son
 
PDF
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
Sang Don Kim
 
PDF
협업하는 디자이너 - #3 Android Studio 설치하기
Jinkyou Son
 
PPTX
Python study 1강 (오픈소스컨설팅 내부 강의)
정명훈 Jerry Jeong
 
PDF
안드로이드 기반 SNS 어플리케이션의 코드 변조를 통한 취약점 분석 및 보안 기법 연구
Sangho LEE
 
PPTX
안드로이드를 위한 Gradle 맛들이기
DongHwan Yu
 
PDF
Android Security Internals (Lesson 3)
Joon Young Park
 
PPTX
Android Native Module 안정적으로 개발하기
hanbeom Park
 
PDF
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
Youngbin Han
 
PDF
안드로이드 와 디바이스 드라이버 적용 기법
chon2010
 
PDF
안드로이드 플랫폼 설명
Peter YoungSik Yun
 
PDF
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
창규 김
 
PDF
Kotlin 2.0을 통해 알아보는 코틀린의 미래
Leonardo YongUk Kim
 
PPTX
NHNNEXT 고등학생 창의체험 프로그래밍 실습
YoungSu Son
 
PDF
[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비
NAVER D2
 
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
Code Engn
 
Android발표자료 홍종진
Jong Jin Hong
 
[NEXT] Flask 로 Restful API 서버 만들기
YoungSu Son
 
Exynos4210 beginnerrev10
mimul
 
안드로이드 빌드: 설탕없는 세계
Leonardo YongUk Kim
 
Open Source Engineering V2
YoungSu Son
 
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
Sang Don Kim
 
협업하는 디자이너 - #3 Android Studio 설치하기
Jinkyou Son
 
Python study 1강 (오픈소스컨설팅 내부 강의)
정명훈 Jerry Jeong
 
안드로이드 기반 SNS 어플리케이션의 코드 변조를 통한 취약점 분석 및 보안 기법 연구
Sangho LEE
 
안드로이드를 위한 Gradle 맛들이기
DongHwan Yu
 
Android Security Internals (Lesson 3)
Joon Young Park
 
Android Native Module 안정적으로 개발하기
hanbeom Park
 
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
Youngbin Han
 
안드로이드 와 디바이스 드라이버 적용 기법
chon2010
 
안드로이드 플랫폼 설명
Peter YoungSik Yun
 
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
창규 김
 
Kotlin 2.0을 통해 알아보는 코틀린의 미래
Leonardo YongUk Kim
 
NHNNEXT 고등학생 창의체험 프로그래밍 실습
YoungSu Son
 
[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비
NAVER D2
 
Ad

Python on Android

  • 1. Python on Android 정보기술 시대에 유익한 파이썬 프로그래밍 – 제 10 강 (2) 동양미래대학교 2015.7 최용 <[email protected]>
  • 2. 주제 • Scripting Layer for Android (SL4A) 소개 • Android 실습 환경 준비 • SL4A와 Python (or QPython) 설치 • Python Shell 실습 • Python Script 실습
  • 3. Scripting Layer for Android (SL4A) 소개
  • 4. Scripting Layer for Android (SL4A) 소개 • Android에서 다양한 스크립트를 실행할 수 있도록 하는 라이브러리 • Google의 20% 프로젝트로 시작 • ASE(Android Scripting Environment)에서 SL4A(Scripting Layer for Android)로 명칭 변경 • 실험적인 구현임 • 여러 스크립트 언어를 사용할 수 있음 • Python (CPython) • Perl • Ruby • Lua • … • https://code.google.com/p/android-scripting/ (closed) • https://github.com/damonkohler/sl4a • https://github.com/kuri65536/sl4a (forked)
  • 5. SL4A Architecture Android Operating Platform (Dalvik VM) Scripting Layer for Android (SL4A) import android droid = android.Android() text = "Hello toast!" droid.makeToast(text) hello.py Hello toast! Context context = getApplicationContext(); CharSequence text = "Hello toast!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show();
  • 6. SL4A Architecture Android Operating Platform (Dalvik VM) Scripting Layer for Android (SL4A) Client (Python) SL4A RPC Server (Android Java Application) Client (Perl) Client (Lua) …
  • 7. SL4A AndroidProxy & Façades AndroidProxy Android Operating Platform TextToSpeechFaçade SmsFaçade class Android(object): def _rpc(self, method, *args): data = {'id': self.id, 'method': method,'params': args} request = json.dumps(data) response = self.client.readline() result = json.loads(response) return Result(id=result['id'], result=result['result'], error=result['error'], ) android.py @Rpc(description = "Displays a short-duration Toast notification.") public void makeToast(@RpcParameter(name = "message") final String message) { mHandler.post(new Runnable() { public void run() { Toast.makeText(mService, message, Toast.LENGTH_SHORT).show(); } }); } AndroidFacade.java Android API CameraFaçade AndroidFaçade JSON, RPC
  • 9. 실습 환경 비교 SL4A + Py4A (apk 설치) QPython / QPython3 (Play 스토어) actual Android Phone 좋음 (설치 번거로움) Best! virtual Android Emulator 절반의 성공 (= FAIL = 삽질) Not tested (Play 스토어?) VMWare(or VirtualBox) + android-x86 Not tested Not tested BlueStacks Not tested (apk 설치?) 좋음 (설치와 사용 편리. SL4A 오류 발생 )
  • 10. Android 실습 환경 준비 • #1 안드로이드 폰 또는 • PC 상의 가상(Virtual) 환경 • #2 안드로이드 에뮬레이터(Android Studio에 포함) 또는 • #3 VMWare + android-x86 또는 • #4 BlueStacks App Player
  • 12. #2 Android Emulator • Java Development Kit (JDK) 설치 http://www.oracle.com/technetwork/java/javase/downloads/index.html • Android Studio • 다운로드 및 설치 https://developer.android.com/sdk/index.html • Virtual Device 생성 • SD 카드 사용 설정 %HOME%.androidavd<장치 이름>config.ini 파일 hw.sdCard=yes 로 변경
  • 13. #3 android-x86 • 하이퍼바이저 • VMWare Player https://www.vmware.com/go/downloadplayer • VirtualBox https://www.virtualbox.org/wiki/Downloads • Android-x86 http://www.android-x86.org/ • Live CD • Installation http://visualgdb.com/tutorials/android/vmware/ 참고 • Pre-installed Image http://www.mininova.org/tor/13278096/
  • 14. #4 BlueStacks App Player • 안드로이드 앱을 PC(Win, Mac)에서 사용할 수 있는 가상 환경 • 무료 설치, 월 사용료를 지불하거나 스폰서 앱 설치 • http://www.bluestacks.com/download.html
  • 15. SL4A와 Python (or QPython) 설치
  • 16. SL4A와 Python (or QPython) 설치 • #1 SL4A와 Python 설치 • SL4A • https://github.com/kuri65536/sl4a/releases에서 sl4a-r6x05-x86-debug.apk 다운로드하여 설치하거나, • Android SDK의 adb 사용하여 설치 가능 > cd %HOME%AppDataLocalAndroidsdkplatform-tools > adb install "%HOME%"Downloadssl4a-r6x05-x86-debug.apk • Python-for-android • https://code.google.com/p/python-for-android/downloads/ 에서 Python3ForAndroid_r6.apk 다운로드하여 설치하거나, • > adb install "%HOME%"DownloadsPython3ForAndroid_r6.apk • 폰에서 “Python3 for Android” 실행 – Install 터치 또는 • #2 Play 스토어에서 QPython 설치
  • 17. Qpython – Python on Android • Python 2(QPython) & 3(QPython3) • 콘솔(Shell) • 편집기 • QPyPi http://qpython.com/
  • 18. Hello, Android! 1. Start button 2. Run script 3. hello_world.py
  • 20. QPython – Console 콘솔 추가로 열기 설정 콘솔 창 선택
  • 21. makeToast() >>> import android >>> droid = android.Android() >>> droid.makeToast("Hello") Result(id=1, result=None, error=None) • SL4A API 호출 결과(Result) • id 숫자값, 처음 호출하면 1, 호출할 때마다 1씩 증가 • result API 호출 결과. 값이 있으면 JSON 형식으로, 값이 없으면 null(None) • error 오류 발생 내역. 오류가 없으면 null(None)
  • 23. getLaunchableApplications() >>> droid.getLaunchableApplications() Result(id=3, result={'Swift HD Camera': 'com.stark.gadgets.swift.hd.camera. CameraActivity', 'SetupWizard': 'com.bluestacks.setup.SetupWizardActivity', ... }, error=None) >>> import pprint >>> apps = droid.getLaunchableApplications() >>> pprint.pprint(apps.result) {'1Mobile Market': 'me.onemobile.android.LaunchActivity', 'AppFinder': 'com.bluestacks.appfinder.AppFinder', 'AppSettings': 'com.bluestacks.appsettings.Main', ... '트위터': 'com.twitter.android.StartActivity'}
  • 25. QPython – Editor (QEdit) 들여쓰기 행 번호로 이동 저장 다른 이름으로 저장 undo 실행 찾기 옵션 Snippets 최근 파일 열기 들여쓰기 열기 새 파일
  • 26. QPython – Scripts • Scripts • Projects
  • 27. 샘플 스크립트 – hello_world.py import sl4a droid = sl4a.Android() droid.makeToast('Hello, Android!') print('Hello world!') Toast: 작은 팝업으로서 나타나는 간단한 피드백 http://developer.android.com/guide/topics/ui/notifiers/toasts.html
  • 28. 샘플 스크립트 – take_picture.py import sl4a droid = sl4a.Android() droid.cameraInteractiveCapturePicture('/sdcard/qpython.jpg')
  • 29. 샘플 스크립트 – say_time.py import sl4a import time droid = sl4a.Android() droid.ttsSpeak(time.strftime("%I %M %p on %A, %B %e, %Y")) %I Hour (12-hour clock) as a zero-padded decimal number. %M Minute as a zero-padded decimal number. %p Locale’s equivalent of either AM or PM. %A Weekday as locale’s full name. %B Month as locale’s full name. %e day of the month (1 to 31) %Y Year with century as a decimal number.
  • 30. httpserver.py try: import SimpleHTTPServer as server # for Python 2 except: import http.server as server # for Python 3 import os os.chdir('/sdcard/') server.test(HandlerClass=server.SimpleHTTPRequestHandler) http://tututen.hatenablog.jp/entry/2014/01/09/121428 참고
  • 31. httpserver.py 실행 결과 웹 브라우저에서 http://0.0.0.0:8000/ GET
  • 32. httpserver.py 실행 결과 (index.html) <html> <head> <title>Hello</title> </head> <body> Welcome to my phone! </body> </html>
  • 33. And More … • 책 바코드 찍어서 검색하기 https://www.mattcutts.com/blog/android-barcode-scanner/ • Random joke 가져와서 친구들에게 문자 메시지 보내기 http://h3manth.com/content/sms-android-using-python • 약정 벗은 안드로이드, 서버가 되다 http://www.zdnet.co.kr/column/column_view.asp?artice_id=201 20518070549
  • 34. 참고 자료 • 웹사이트 • https://github.com/damonkohler/sl4a • https://code.google.com/p/python-for-android/ • https://groups.google.com/forum/#!forum/android-scripting • http://wiki.qpython.org/doc/ • SL4A API Help http://www.mithril.com.au/android/doc/ • Android applications using Python and SL4A http://www.ibm.com/developerworks/library/mo-python-sl4a-1/ • 책 • Lucas Jordan 외, Practical Android Projects, Apress • Paul Ferrill 저, 류광 역, 프로 안드로이드 SL4A: 파이썬으로 안드로이드 앱 만 들기, 와우북스

Editor's Notes

  • #15: 한글 설정: Play 스토어에서 Google 한국어 입력기 설치 (Google 계정 입력 필요) IME 선택에서 한글 키보드 사용