使用Python进行后台脚本编写外文翻译资料

 2022-08-09 04:08

英语原文共 27 页,剩余内容已隐藏,支付完成后下载完整资料


第六章 使用Python进行后台脚本编写

本章将介绍如何创建没有用户界面的Android脚本层(SL4A)的脚本,并且使之在后台运行。

这些是本章的主要主题:

  • 编写在后台执行特定任务的脚本
  • 演示SL4A的不同方面功能

Python作为一门用于开发快速有效地执行基本功能任务的脚本语言而享有盛誉。 本章将向您展示如何构建执行特定操作的脚本,而这些脚本基本上不需要干预。 因此,本章中的脚本将没有用户界面可言。 如果您在终端窗口中启动脚本,虽然可能会有一些状态信息,但是除了启动脚本之外,用户不能进行其他操作。

后台任务

使用最新版本的SL4A(在撰写本文时为r4),您可以在终端或后台启动任何脚本。 要在后台启动它,请选择看起来像一个小齿轮的图标,如图6-1所示。

脚本运行时,它将在“通知”页面上放置一个条目,以标识该应用程序,并在必要时为您提供一种关闭它的方法。 如果您想在设备启动时启动脚本,则还要考虑一个专门用SL4A编写的应用程序。 该应用程序称为“启动时启动”,几乎可以完成所有操作。 图6-2显示了主屏幕。

每次设备启动时,此实用程序都会启动一个SL4A脚本。 如果要启动多个脚本,则需要创建一个主脚本,该主脚本又将启动其他脚本。 这就提出了一个明显的问题:如何从Python启动另一个SL4A脚本? 为了回答这个问题,我们需要看一下makeIntent函数。 以下是有关makeIntent的文档:

触发器

SL4A有实现触发器的规定。 我想在这里简单地提及它们,但是请注意,在撰写本文时,它们仍然有些问题。 基本概念是提供一种机制,可根据设备上发生的某些情况或事件来触发某些功能。 图6-3显示了菜单,如果您在查看脚本列表时按Menu(菜单)按钮,然后选择Triggers(触发器),将会看到该菜单。

任何现有触发器将显示在此屏幕中。 您可以使用“全部取消”按钮来取消所有触发器,或者长按要删除的触发器以显示“删除”按钮,以选择单个触发器(请参见图6-4)。 要添加新触发器,请按图6-3中所示的Add按钮。 这将显示/ sdcard / sl4a / scripts目录的内容,并允许您选择要运行的脚本。一旦选择了脚本,您将看到一个如图6-5所示的弹出菜单。 您可以在此处选择触发脚本运行的内容。 选项列表包括电池,位置,电话,传感器和信号强度。 坏消息是触发器不能完全发挥作用,因此使用风险自负。 从好的方面来说,有一种方法可以使用稍微不同的方法来实现某些相同的功能。

请注意,如果启动一个崩溃的应用程序,则会陷入无限循环,每次SL4A启动时,SL4A都会尝试启动触发的脚本,然后再次崩溃。 如果可以进入通知屏幕并调出SL4A触发器,则应该可以按“全部取消”按钮并删除有问题的脚本。 解决此问题的唯一其他方法是先卸载然后重新安装SL4A。

基于方向的动作

这是一个方便的脚本,如果您将手机正面朝下放置在平坦的表面上,它将使手机处于静音模式。 该代码使用startSensingTimed API调用来确定方向和运动,如果确定设备处于静止状态且基本上是水平的,则将使用toggleRingerSilentMode调用将振铃器设置为静音。 代码如下所示:

检测电话是否正面朝下放置的另一种方法是使用光传感器。

以下是一个简短的代码段,该代码段将使用文字转语音(TTS)功能通知您手机何时面朝下:

这可能是谈论日志记录的好地方。 编写没有用户界面的程序的最大挑战之一就是调试。 调试“静默”代码的方法有很多,从插入打印语句到使用Android SDK中的DDMS工具。 大多数Linux系统应用程序明确生成某种日志,目的是监视执行情况并记录错误信息。 Android平台提供了一个称为logcat的日志记录工具。 有一个名为log的API函数,该函数会将您想要的任何字符串消息写入logcat文件。 另外,您也可以写入自己的日志文件。在第9章中,我将详细介绍一个复杂的应用程序,该应用程序使用日志记录信息。

某些日志条目如下所示:

如果仔细观察,您会注意到许多不同类型的条目。 有一些信息性条目可以标识何时执行了特定的代码段,例如loadconfig。 其他条目转储Python变量的内容,例如以下行:

{upath: u/sdcard/sl4a/scripts, utask: ulistdir, utype: ucsv}

大括号将该对象标识为Python字典,该字典总共包含三个键/值对。 您对日志文件中的内容具有很大的灵活性。 这是第9章SMSSender应用程序中用于打开日志文件的代码:

创建任何类型的服务应用程序时,日志记录都是保存在工具箱中的重要工具。 当您的程序停止运行时,它将非常有用,您需要查看当时的情况。 也许您编写了永不间断的完美代码,但对我而言并非总是如此。

基于位置的动作

您可能经常在一些位置上肯定希望在那里时手机保持静音。 教堂可能是这些地点之一,或者可能是疗养院,医院或图书馆。 您可以创建类似于基于传感器的动作的脚本,该脚本将检测您的位置并采取特定的动作。 您需要知道的是该位置的GPS坐标。 要使此脚本正常工作,我们需要一些帮助函数来计算从当前位置到“特殊”位置的距离。 对于此搜索,您可能想尝试一下http://stackoverflow.com网站。 这个站点有大量的编码问题被询问和回答。 这是在http://stackoverflow.com上找到的代码段,可用于使用Haversine公式计算两个GPS点之间的距离:

有了这个,我们现在只需要编写一个简短的脚本来获取我们的当前位置,然后使用我们的固定位置调用Haversine函数。 如果我们在固定距离内(例如,小于1000英尺),我们将打开手机的静音模式。

基于时间的动作

这是一个简单的脚本,可将您的手机在一天的特定时间设为静音,然后在另一时间重新打开铃声。 可以将其视为您不打扰我正在睡觉的脚本。

基于经过时间的触发器

创建在经过一定时间后或在特定时间触发的脚本非常简单。 这是一个代码片段,它仅每十秒钟就会打印一条消息:

以该想法为起点,您可以构建各种脚本。 如果您想构建一些脚本来设置固定的计时器,使其在一个小时后关闭,或者在一个小时后关闭,该怎么办? 在到达此处之前,您需要做一些事情。 首先,您需要为警报播放声音。 Google快速搜索警报声会显示各种结果。 我在soundjax.com网站上找到了不错的收藏。 其中许多都是.wav格式。 幸运的是,您的Android设备将正确播放.wav文件。

我们将使用mediaPlay API函数实际播放声音。 您可以根据需要在模拟器上进行测试。 首先,您需要创建一个目录来保存您的声音文件,然后使用adb push命令将声音文件推送到设备,如下所示:

经过时间主题的微小变化是按固定的时间间隔执行操作,例如在每小时的顶部和底部发送包含当前位置信息的SMS。 这对于跟踪某人的下落可能很有用,而无需昂贵的服务。 发送SMS只需一行代码,如下所示:

droid.smsSend(8005551234,Test from Android)

要添加代码以获取当前位置,您首先必须调用startLocating函数以开始收集位置信息。 接下来,您调用readLocation以实际读取当前位置,最后调用stopLocating以关闭位置功能。 我们将添加15秒钟的延迟,以便在GPS开启后给其一点时间稳定时间。 如果没有GPS信号,我们将根据网络中的信息使用当前位置。 代码如下所示:

FTP文件同步工具

使文件或目录在两台或多台计算机之间保持同步是您开始使用它们之前必须完成的任务之一。 有许多方法可以使用许多商业程序来完成此任务。 使用SL4A同步文件的一种方法是使用FTP服务器。 在Linux,Mac OS X和Windows上安装和配置FTP服务器非常简单。 我将在这里为您概述步骤。

在Mac OS X上,您需要通过点击屏幕右上角的Apple符号并选择“偏好设置”来打开“系统偏好设置”实用程序。 您应该会看到如图6-6所示的窗口。

FTP服务是“共享”首选项的一部分,因此,通过单击图标打开该文件夹。 您将看到另一个窗口,如图6-7所示。

接下来,在“服务”列表中找到“文件共享”条目,并确保选中了“打开”复选框(请参阅图6-7)。 最后,单击用户列表上方的“选项”按钮以打开“文件共享选项”窗口,如图6-8所示。

单击使用FTP共享文件和文件夹实际上将启动FTP服务器。 您需要在Mac计算机上拥有一个用户帐户,才能远程访问FTP服务器。 在Linux上,我使用一个名为vsftpd的程序。 这是一个免费的FTP服务器,可轻松安装,并且可与最新版本的Ubuntu完美兼容。 要安装它,请使用单个apt-get命令,如图6 9所示。

下载完成后,程序将自动启动。 您无需对配置进行任何更改,因为默认情况下会禁用匿名连接之类的功能。 如果您想检查配置文件,则该文件位于/ etc目录中,名为vsftpd.conf。 图6-10显示了在命令提示符下使用Windows FTP客户端连接到Linux机器的过程。

在Windows上,从Windows功能屏幕启用FTP服务器。 进入该屏幕的最简单方法是按键盘上的Windows图标键,然后在搜索框中键入Windows功能一词。 您应该在“控制面板”下看到的第一个条目是“打开或关闭Windows功能”行。 单击此行将打开Windows功能面板,如图6-11所示。

在“ Windows功能”屏幕打开的情况下,您需要检查两件事以使FTP服务器运行:必须启用FTP服务,并且需要IIS管理控制台才能管理FTP服务。 安装完成后,您应该能够启动IIS管理控制台并配置FTP服务。

为此,我们将使用相同的技术,即按下键盘上的Windows图标键,然后在搜索框中输入Internet。 这将显示几个选项,包括Internet Explorer和Internet信息服务(IIS)管理器(请参见图6-12)。 接下来,您要启动IIS Manger并检查FTP服务的当前设置。

Windows 7的所有默认设置都与Linux上的vsftpd类似,但禁用了匿名登录。 您可以从IIS管理器控制台中调整许多其他配置设置,如图6-13所示。

启用服务器软件后,您实际上需要创建一个站点供FTP服务使用。 可以通过右键单击左窗格中的“站点”文件夹或选择“站点”文件夹并单击“操作”窗格中的“添加Ftp站点”行来完成。 您会看到几个对话框,以指导您设置新的FTP站点。 第一个对话框提示输入文件的名称和物理位置(请参见图6-14)。

单击“下一步”时,将看到一个如图6-15所示的对话框。 在这里,您可以为FTP服务器分配一个特定的IP地址(在本例中为计算机的IP地址)并设置SSL设置。 我们不需要SSL加密,因为它只能在本地网络上运行。

再次单击“下一步”将带您进入最终对话框,您必须在其中配置身份验证规则。 因为您将需要登录,所以可以对任何经过身份验证的用户授予完全访问权限,如图6-16所示。

在Windows 7中,您需要做的最后一件事是更改防火墙设置以允许FTP连接。 可以在具有管理员权限的命令窗口中完成此操作,如图6-17所示。

在Windows上配置FTP服务器显然比在Linux或Mac OS X上乏味。您还可以使用其他第三方FTP服务器程序,但是我想向您展示如何使其与基本OS一起使用。 如果一切正确,您将在IIS管理器屏幕中看到FTP站点,状态为已启动,如图6-18所示。

既然我们已经完成了服务器部分的工作,那么我们可以继续使用SL4A构建一个小的客户端工具。 好消息是Python标准库提供了一个用于构建客户端代码的ftplib模块,因此您无需寻找任何东西。 使用ftplib模块非常简单,主要由识别目标系统(HOST)和登录所需的用户凭据组成。代码的实质是通过比较每个目录中的文件列表,使两个目录保持同步。 如所写,同步是从设备到远程服务器的一种方式,但是您可以修改它而无需进行很多额外的编码。

这是脚本:

与Flickr同步照片

Flickr是共享照片的出色服务。在许多带相机的Android设备上,“图库”应用程序提供了一个共享单个照片的选项。如果您可以只运行脚本并将所有照片同步到Flickr,这会很好吗?这就是SL4A出现的地方。查找代码以完成艰苦的工作是Google进行的另一个简单搜索。尽管有很多选择,但我还是选择了一个名为uploader.py的选项。它已经存在了一段时间,并被数篇博客文章引用。如果您选择使用此代码,则还需要一个名

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[238945],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。