使用Python开发Android应用程序:第一节 在手机上配置Python运行环境
本节目录:
1.下载和安装 Scripting Layer for Android (SL4A)2.下载和安装 Python for android
3.第一个HelloWorld程序
1.下载和安装 Scripting Layer for Android (SL4A)
Scripting Layer for Android (SL4A)
是一个开源项目,目标是为android系统提供脚本语言的支持,使用户可以直接在android平台上进行脚本语言的编辑、解释和执行。这些脚本语言已
经可是使用很多封装好的android API来开发功能丰富的android应用程序,并且使开发变得更加的简单和高效!
这个平台支持多种脚本语言,比如 Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl, shell 等,你可以选择你熟悉的语言进行开发,本系列教程使用Python为编程脚本语言
SL4A项目的地址:http://code.google.com/p/android-scripting/
页面打开后,你可以选择用手机扫描该页面的二维码将应用直接下载并安装到手机上,或者点击二维码图片,将应用下载的电脑上在传输到手机上安装。你要是懒得去项目主页,直接扫描下图的二维码即可:

这个平台支持多种脚本语言,比如 Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl, shell 等,你可以选择你熟悉的语言进行开发,本系列教程使用Python为编程脚本语言
SL4A项目的地址:http://code.google.com/p/android-scripting/
页面打开后,你可以选择用手机扫描该页面的二维码将应用直接下载并安装到手机上,或者点击二维码图片,将应用下载的电脑上在传输到手机上安装。你要是懒得去项目主页,直接扫描下图的二维码即可:
2.下载和安装 Python for android
在项目主页面的右上方,有该应用支持的所有脚本语言的下载列表,如下图所示;选择你使用的语言,打开相应的语言环境的下载页面,与下载SL4A的方式类似,将该语言包应用下载并安装到你的手机上。我打开的是Python的页面,如下图所示:
程序安装完成后,打开Python for Android应用,在应用的最上方会有一个Install的按钮,点击该按钮,就会自动下载Python相关的文件并解压和安装,这个过程结束后,你的android手机上的Python开发环境就配置好了!
3.第一个HelloWorld程序
打开SL4A应用,会进入Python示例代码列表,基本上是对主要API的演示,部分示例可能由于偏老,运行时会提示方法过期或者运行异常的问题,这个至少修改少许代码即可,有机会的话,我会在后续课程中介绍这是示例以及修正的方法。点Menu键,然后点击Add,选择Python2.6.2,就会新建一个Python脚本文件,将文件的名字命名为:HelloPythonInAndroid.py
点击屏幕进入脚本编辑区,开始输入如下内容:
import android
droid = android.Android()
droid.makeToast(‘Hello, Python in Android’)
输入完成后,如下图所示:
点击Menu,选择Save&Run,恭喜你,你已经用Python完成了第一个Android应用:HelloPythonInAndroid!欢迎加入豆瓣SL4A小组一起讨论进步:豆瓣SL4A小组 (http://www.douban.com/group/SL4A/)
------------------------------------------------------------------------
使用Python开发Android应用程序:第二节 第一个有实用价值的应用
本节目录
1.本节相关的python知识2.图书价格查询器的功能分析
3.图书价格查询器的设计实现
1.python预备知识
单行注释使用#号,#以后的内容是注释,不会被解释器解释执行执行;import语句用来导入模块,后面跟模块名;
python中的变量不需要声明类型,变量被赋值之后类型会自动指定,这也是动态语言的特性之一;
元组,python基本数据结构之一,使用这样的形式表示:元组1=(数据1,数据2,数据3)
元组一旦生成后就不能修改了
元组可以嵌套包括他自己在内的所有列表类型的数据集合,如:元组2=(元组1,数据4,数据5)
元组中数据的获取方法: 元组名[索引编号]
字典,python基本数据结构之一,使用这样的形式表示:字典1={键1:值1,键2:值2,键3:值3}
字典可以嵌套包括他自己在内的所有列表类型的数据集合
字典中数据的获取方法:字典名[键名] 或者 字典名[索引编号]
格式化字符串:字符串中的%s会被后面的对象替换掉,例如:
‘Hello,%s’ % ‘PuLee’
最后返回的结果是:
Hello,PuLee
注意两个字符串之间的那个%号不要漏掉了!
2.图书价格查询器的功能分析
第一步:调用条形码扫描程序,扫描书的条形码,然后从条形码中获得书籍的ISBN编号
第二步:构造查询书籍价格的Url地址,使用豆瓣的图书搜索功能
第三部:打开浏览器,传入构造好的Url地址,返回查找的结果
3.图书价格查询器的设计实现
实现代码如下:#导入Android的API模块
import android
#获得操作对象
droid = android.Android()
#运行扫描程序,返回一个元组
code = droid.scanBarcode()
#从扫描程序返回的元组中取得isbn编号
isbn = code[1]['extras']['SCAN_RESULT']
#构造查询书籍的Url
url = ‘http://book.douban.com/subject_search?search_text=%s&cat=1001′ % isbn
#打开浏览器,传入构造好的Url,返回查找结果
droid.startActivity(‘android.intent.action.VIEW’,url)
本文参考了文章:http://www.mattcutts.com/blog/android-barcode-scanner/
--------------------------------------------------------------------------------------------
使用Python开发Android应用程序:第三节 在电脑上编写程序在手机上运行
本节目录
1. 一些传统的方法2. 将程序的代码生成二维码图片
3. 使用手机扫描生成的二维码,并将其转化为py脚本
前言
最手机上写脚本是一件每场辛苦的事情,虽然SL4A人性化的为我们提供了API快速插入功能,并且优美的Python为我们省去了输入分号和括号之苦,但是没有智能感知,没有关键字补全,狭小的按键,输入符号的困难,还是让我没有勇气去在手机上写超过50行的程序.改为在电脑上编写代码,再复制到手机上运行!那么,如何快速的将PC上编写的代码发送到手机上呢?
1. 一些传统的方法
1.1 数据线这个就不用我多说了吧,应该都会的,但是随身带数据线是件很麻烦的事情,所以应该再找些其他方法!
1.2 wifi
和数据线原理差不多,很多的android的PC客户端都已经支持通过wifi连接手机了,比如豌豆荚,但是不是哪里都有wifi的.
1.3使用具有网络同步功能的笔记管理软件
通过笔记管理软件,比如evernote,
盛大麦库(使用此链接注册,可以将500M控件升级为1G,作为邀请人,我的空间也会增长200M,呵呵,双赢啊!)
在pc端编写好脚本,上传,然后再在手机上下载下来,粘帖到SL4A中.
2.将程序的代码生成二维码图片
上面的几种方法要么对硬件有要求(数据线,无线路由),要么要下载额外的软件(笔记管理软件),都比较麻烦,其实SL4A的作者也考虑到了这个问题,为我们提供了一种很有趣的代码输入方式:扫描二维码!
方法如下:
1. 打开二维码生成页面:http://zxing.appspot.com/generator/,在Contents后面的下拉列表中选
择:Text
2. 在Text content 后文本区的第一行输入脚本的名称,比如:HelloWorld.py
3. 在他的下方输入脚本的内容.
4. 在Barcode size 后的下拉列表中选择:L
5. 点击Gernerate 生成二维码
6. 将右边生成的二维码保存或者与你的朋友们分享!
生成的二维码如图所示:
3. 使用手机扫描生成的二维码,并将其转化为py脚本
二维码生成了,如何将它导入手机呢?
1.启动SL4A进入脚本列表
2.按菜单键(MENU)
3.点击Add
4.点Scan Barcode
5.扫描生成的二维码,脚本便会自动显示在列表中(名称就是第一行的名称)
ps:二维码最多容纳的字符为4296个,所以只能用来存放较短的脚本!

本文参考了:http://code.google.com/p/android-scripting/wiki/SharingScripts
1.启动SL4A进入脚本列表
2.按菜单键(MENU)
3.点击Add
4.点Scan Barcode
5.扫描生成的二维码,脚本便会自动显示在列表中(名称就是第一行的名称)
ps:二维码最多容纳的字符为4296个,所以只能用来存放较短的脚本!
本文参考了:http://code.google.com/p/android-scripting/wiki/SharingScripts
-----------------------------------------------------------------------------------------
在ubuntu10.10下使用android真机进行调试
问题描述
今天尝试这在ubuntu10.10下搭建android开发环境,一路下来都比较顺利,但是当我将nexus one手机连接到电脑上时,却无发识别,输入adb devices,输出结果为:???????????? no permissions
很明显,设备未被识别。
解决方案:
第一步,查看usb信息:在终端输入命令 lsusb
应该能看到一条类似这样的结果
Bus 002 Device 025: ID 18d1:4e12 Google Inc. Nexus One Phone (Debug)
记下ID 后面的四位数字,这里是18d1,后面需要使用。
第二步,新建 /etc/udev/rules.d/51-android.rules 文件:
在终端输入命令 sudo gedit /etc/udev/rules.d/51-android.rules(会提示输入root密码,输入即可)
然后在弹出的文本框中输入
SUBSYSTEM==”usb”, SYSFS{idVendor}==”设备代码”, MODE=”0666″
其中的设备代码便是第一步获得的那四位数字
第三步,为新建的文件添加读和写的权限:
sudo chmod a+r /etc/udechmod a+r /etc/udev/rules.d/51-android.rules
第四步,先关闭手机的调试模式,再重新打开手机的调试模式。
完成!
此时再输入命令,adb devices,输出结果为:
HT9CSP801392 device
手机已经能正常识别了。
------------------------------------------------------------------------------------------
Ubuntu下的Android模拟器
在官方下载Android的SDK,再下载对应系统的system image,这样准备工作就做好了~
现在将Android SDK解压,得到android-sdk-linux_86文件夹,进入android-sdk-linux_86文件夹下的tools文件夹,然后双击 其中的Android,运行,这样就打开了Android SDK and AVD Manager,如图:
进入Installed Packages 选择update All,可以看到右方有可用版本信息,根据需要选择系统信息,然后点击Install安装。(为Android模拟器加入market只能是1.5或者1.6系统,以下以1.6为例)
下载完成后打开Virtual Devices就可以创建模拟器了,点new可以看到如下界面:
其中name是模拟器名,Target处可以选择系统(这里是1.6),SD Card处是创建SD卡的,hardware处选择硬件(GPS, Accelerometer之类的)。
设置好后点击Create AVD创建就好了。
此时Virtual Devices中已经有我们的模拟器了,在运行之前呢我们为模拟器加入market。
将之前下载的signed- dream_devphone_userdebug-img-14721.zip解压,把其中的system.img放到 /home/user/.android/avd/simulator.avd下(其中user为你的ubuntu用户名,simulator为创建的模 拟器名称)。
现在在Android SDK and AVD Manager的Virtual Devices中选择刚才创建好的模拟器,点击start运行就可以了。market已经加入~
------------------------------------------------------
ADB
下面说说使用ADB(Android Debug Bridge)的一些具体问题。 ADB是在Android SDK里获得的。
Part One. 安装ADB
SDK下载回来,解压后进入tools目录,看到一个名为adb_has_moved.txt的文件,原来是随着SDK的更新,ADB已经不默认包 含在tools里了,要通过安装Android SDK Platform-tools来获得。在运行tools文件夹下的android程序,在Availalbe Packages里找到Android SDK Platform-tools,勾选安装,安装之后回到SDK的根目录就可以看到一个名为platform-tools的文件夹,adb就在里面了。可以 在这个文件夹下运行adb,不过为了更方便还是把它放在 /usr/local/bin/下吧,在tools文件夹下执行命令:sudo cp adb /usr/local/bin/ |
连上手机,运行adb devices看看,诶?
List of devices attached这是怎么回事?
???????????? no permissions
Part Two. 解决no permissions问题
Google一番,得知可以通过用root权限启动adb server来解决问题,但是每次用adb不会很麻烦嘛?!后来发现在SDK的帮助文档里有关于这个问题的说明:
If you’re developing on Ubuntu Linux, you need to add a rules file that contains a USB configuration for each type of device you want to use for development. Each device manufacturer uses a different vendor ID. The example rules files below show how to add an entry for a single vendor ID (the HTC vendor ID). In order to support more devices, you will need additional lines of the same format that provide a different value for the只要按照说明,在/etc/udev/rules.d/目录下创建51-android.rules文件,写入自己手机的信息就好了。SYSFS{idVendor}property. For other IDs, see the table of USB Vendor IDs, below.
- Log in as root and create this file:
/etc/udev/rules.d/51-android.rules.For Gusty/Hardy, edit the file to read:For Dapper, edit the file to read:
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0bb4", MODE="0666"- Now execute:
chmod a+r /etc/udev/rules.d/51-android.rules
什么?你有多个不同品牌的Android手机或平板?每一个都添加自然是可以的,当然也有简便方法啦。
只要在51-android.rules中保留一行
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666" |
修改以后重新插入你的Android设备,运行adb devices命令看看:
List of devices attached怎么样,可以识别了吧。
M1105bfb6840 device