第一节 在手机上配置Python运行环境

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/
页面打开后,你可以选择用手机扫描该页面的二维码将应用直接下载并安装到手机上,或者点击二维码图片,将应用下载的电脑上在传输到手机上安装。你要是懒得去项目主页,直接扫描下图的二维码即可:

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!

第二节 第一个有实用价值的应用

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)

最后的返回的查询结果:

第三节 在电脑上编写程序在手机上运行

前言

最手机上写脚本是一件每场辛苦的事情,虽然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://tieqixia.javaeye.com/blog/891729

另一篇文章:

在Android上用python(Perl、Lua、BeanShell等)编程
2011-01-13 17:12

原文来自:http://imxingzhi.appspot.com/?p=110001

偶然间发现了google code上的一个项目——android-scripting

该项目开发了一个叫SL4A(Scripting Layer for Android),也被称为ASE(Android Scripting Environment)的软件

该软件可允许一些脚本语言如python、Perl、Lua、Javascript(甚至可以用BeanShell——可以解释Java代码了)在android平台上来编写并编译程序。

SL4A还能访问Android API,可以在手机上直接开发Android应用!虽然我还没这能耐,但想想还觉得爽啊。

我还发现可以利用SL4A的服务器或是通过USB,在电脑上写脚本然后发送至手机上运行。(RemoteControl

这是款很好很强大的软件!!

下面说说如何在Android上用python写程序。

打开项目主页:http://code.google.com/p/android-scripting/ 下载SL4A软件。

用手机上的条码扫描器扫描位于正中的条码并在手机里下载,或者点击它下载再通过usb传输到手机去。安装它。

接下来,就是增加python语言支持了。

有两种方式安装python解释器。

1. 在项目主页右边Featured downloads处选择python_for_android_r1.apk并将其下载至手机,方法同上,然后在手机上安装后执行。执行后是一个黑色界面,上面有 Install 按钮,点击它就会自动下载压缩包。

2. 执行SL4A ,按手机的Menu键,选Interpreters, 再按Menu,选Add,就会出现各种支持的语言了,选Python2.6.2 程序便会自动下载并安装。

py文件的执行:

python安装后是会有一些范例的,点击便会自动执行,但范例都是Android API的范例。

自己来写一个:

依次按Menu – Add - Python2.6.2

取个名字:hello.py  下面就可以写代码了,第一个程序当然是hello world   ~/(≧▽≦)/~啦啦啦

代码如下:

print “hello world”

按Menu,Save&Run ,屏幕就出现结果了。

至此,手机就可以用python写程序啦,安装其他语言也是同理。

PS.

在Interpreters里直接点击Python 2.6.2的话,可进入python命令行界面,可以直接执行代码,但还是建议新建py文件,因为在命令行界面下不能用全键盘打字,打命令很痛苦:(

PPS.

Android API:http://code.google.com/p/android-scripting/wiki/ApiReference

PPPS.

感谢这新闻,让我知道了这一好东西:http://www.infoq.com/cn/news/2009/07/android-scripting

转载自:http://hi.baidu.com/zhangtqqq/blog/item/52291c07bb5737df7b8947a7.html

【Android】让Python在Android系统上飞一会儿的更多相关文章

  1. 转 让Python在Android系统上飞一会儿

    让Python在Android系统上飞一会儿 地址: http://blog.csdn.net/ccwwff/article/details/6208260

  2. python在windows系统上创建文件

    正确方法为:open("test1.txt",'wb')或open("test1.txt",'w') 以下是网上的方法创建遇到的问题 使用Python2.7在w ...

  3. 利用Python进行windows系统上的图像识别与点击(Mac OS系统也可以)

    系统环境: 1.安装了python 2.安装了pyautogui模块 windows系统:无需安装依赖模块,在cmd中直接输入pip install pyautogui即可完成安装 Mac OS系统: ...

  4. Android API在不同版本系统上的兼容性

    随着安卓版本的不断更新,新的API不断涌出,有时候高版本的API会在低版本crash的. 如果minSdkVersion设置过低,在build的时候,就会报错(Call requires API le ...

  5. 请不要重复犯我在学习Python和Linux系统上的错误

    本人已经在运维行业工作了将近十年,我最早接触Linux是在大二的样子,那时候只追求易懂,所以就选择了Ubuntu作为学习.使用的对象,它简单.易用.好操作.界面绚丽,对于想接触Linux的新手来说是非 ...

  6. centos6.5+jexus5.6.3+mono 3.10实践,让asp.net在linux上飞一会儿

    备忘,这是给自己看的,用ubuntu server装mono 3.10老是卡在了编译libgdiplus上面,从来就没成功过,郁闷啊,零零散散搞了好几天,作罢.后来试了OpenSUSE 11很容易搞好 ...

  7. 如何在Windows系统上基于Sublime搭建Python的编译环境

    刚刚接触到Python,直接在计算机上编译时不能正确的运行,所以将一些有关编译环境调试的知识总结了一下. 环境搭建: Python在 windows系统上编译的时候可能会出现一些编译无法运行的情况,我 ...

  8. 理解WebKit和Chromium: 调试Android系统上的Chromium

    转载请注明原文地址:http://blog.csdn.net/milado_nju 1. Android上的调试技术 在Android系统上,开发人员能够使用两种不同的语言来开发应用程序,一种是Jav ...

  9. 在Mac系统上配置Android真机调试环境

    在Mac系统上配置Android真机调试环境 mac上配置安卓环境还说挺方便的,真机调试也比win上要好一些.win上被各种软件强行安装了xxx助手. 在mac上就了一个干净的感觉. 下载Androi ...

随机推荐

  1. xtrabackup

    mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了.而使 ...

  2. 第八次作业(课堂实战)- 项目UML设计(团队)

    1. 团队信息 队名:小白吃队 成员: 后敬甲 031602409 卢泽明 031602328 蔡文斌 031602301 葛亮 031602617 刘浩 031602423 黄泽 031602317 ...

  3. C#红绿状态灯

    1.在Label里 画圆,存在窗体刷新会丢失画. public void SetShowConnectStatus(Label lbl, bool isOk) { lbl.Text = "& ...

  4. 弹出框sweetalert插件的简单使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. win10:家庭版开启组策略

    1.新建一个txt文件 2.复制以下内容到txt文件 @echo off pushd "%~dp0" dir /b C:\Windows\servicing\Packages\Mi ...

  6. 自然语言处理之LCS最长公共子子序列

    #!一个序列S任意删除若干个字符得到的新序列T,则T叫做S的子序列 注意,这个和最长公共字串不一样,最长公共子串要求连续. 1.算法公式: def lcs(a,b): lena = len(a) le ...

  7. jQuery实现鼠标点击div外的地方div隐藏消失的效果(转)

    转:https://www.cnblogs.com/jsingleegg/p/3456152.html css部分: <style type="text/css">.p ...

  8. Confluence 6 安全概述和建议概述

    这个文档是针对 Confluence 的系统管理员希望对 Confluence Web应用程序安全性进行评估而设计的.这个页面将对系统的安全进行大致的描述,同时也会对 Confluence 的安全配置 ...

  9. Java并发编程基础-线程安全问题及JMM(volatile)

    什么情况下应该使用多线程 : 线程出现的目的是什么?解决进程中多任务的实时性问题?其实简单来说,也就是解决“阻塞”的问题,阻塞的意思就是程序运行到某个函数或过程后等待某些事件发生而暂时停止 CPU 占 ...

  10. 《剑指offer》 二进制中1的个数

    本题来自<剑指offer> 二进制中1的个数 题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路: 两种思路: 第一种:对n进行左移,检测最后一位是否为1,但考 ...