Содержание
Основы android sdk
Есть два основных метода для тестирования Python-кода с помощью SL4A: с использованием эмулятора или с использованием реального физического устройства. Android SDK предоставляет базовые возможности эмулятора и инструменты для создания эмулированного устройства с такими же характеристиками, как у соответствующего физического устройства.
Инструмент SDK Manager действует в качестве менеджера обновлений и инструмента для создания виртуального устройства. При каждом запуске инструмента SDK Manager он подключается к сайту для Android-разработчиков с целью проверки на наличие новых выпусков (вы можете пропустить этот процесс, нажав на Cancel). В этой точке вы должны видеть окно Android SDK and AVD Manager(см. рис. 6).
Рисунок 4. начальный экран установки python for android
Нажмите Install для запуска процесса, который загружает и распаковывает несколько zip-файлов. В данном случае просто нажмитеInstall на основном экране установки (рис. 5).
Рисунок 5. основной экран установки python for android
Вы должны увидеть три отдельных окна хода выполнения. Первое окно демонстрирует процесс загрузки, а затем извлечения файлов на SD-карту. Если все прошло нормально, появится сообщение «Installation Successful».
Что такое шаблон дизайна фасада?
Фасад – это объект, который предоставляет интерфейс, который упрощает доступ к связанным интерфейсам в приложении. Другими словами, фасад изолирует работу библиотек от клиента и действует как точка входа на каждый уровень подсистемы.
About json
The JavaScript Object Notation (JSON) is a data-interchange format. Though many programming languages support JSON, it is especially useful for JavaScript-based apps, including websites and browser extensions. JSON can represent numbers, Booleans, strings, null, arrays (ordered sequences of values), and objects (string-value mappings) made up of these values (or of other arrays and objects).
Adding the python interpreter
To install the python interpreter on a device, follow the steps given below −
Step 1 − Start the SL4A application.
Step 2 − Click the Menu button.
Step 3 − A list of options will be displayed. Select View.
Step 4 − Select the Interpreter option from the dialog box. Click Add.
Step 5 − A list of interpreters available for download is displayed. Select Python 2.62 (or greater).
To install python interpreter on an emulator, follow the steps given below −
Step 1 − Ensure that the emulator is running in the background.
Step 2 − Download python_for_android_rx.apk.
Step 3 − In the terminal command-line shell, navigate to the location where the apk file is stored and type the following on the command line −
adb install python_for_android_rx.apk
SL4A supports scripting engine for multiple languages. A list of some language specific apk files are mentioned below −
- beanshell_for_android_rx.apk
- jruby_for_android_rx.apk
- lua_for_android_rx.apk
- perl_for_android_rx.apk
- python_for_android_rx.apk
- rhino_for_android_rx.apk
Android debug bridge
ADB, Android Debug Bridge, is a command-line utility included with Google’s Android SDK. ADB can control your device over USB from a computer, copy files back and forth, install and uninstall apps, run shell commands, and more.
If you have an emulator running and a real device connected, you must specify where you want the ADB commands to a real device, use the option − d and for the emulator, use –e. Following is the list of flags and commands for ADB.
S.No. | ADB flags & Description |
---|---|
1 | -d Directs device to the only connected USB device; returns an error if more than one USB device is connected. |
2 | -e Directs command to the only running emulator; returns an error if more than one emulator is running. |
3 | -s <serial_number> Directs command the USB device or emulator with the given serial number. |
4 | devices List all connected devices |
5 | connect <host>:<port> Connect to a device via TCP/IP |
6 | disconnect <host>:<port> Disconnect from a TCP/IP device |
Android rpc client
Scripts running within the interpreter instance communicates with the SL4A application through the Android Proxy RPC Client. The client establishes a Remote Procedure Call (RPC) connection to SL4A, and allows scripts to interact with the Android Framework. The SL4A facades facilitate this communication. Data is sent as JSON payloads.
Android.py file
The only additional file that one needs to download is the android.py file. Include a copy of this file under /Lib/site-packages in the Python installation directory. This file includes python modules for Android development.
Application framework
This layer makes available the Libraries as services to the applications. Some most important components within this layer include Location Manager, Resource Manager, Activity Manager and Notification Manager.
Background tasks
SL4A enables a script to run in a terminal or in the background. To launch a script in the background choose the icon that looks like a cog wheel. The script runs in the background infinitely. However, one may choose to explicitly shut down such services.
Basics of eclipse
Eclipse is an application with many capabilities and options. A welcome screen will greet you, the first time you launch the program. Eclipse uses a number of basic concepts and terminology to address different functions and operations of the program.
Some of these terminologies are explained here −
Workbench − It identifies the overall window of the Eclipse application. It contains multiple child windows, each window containing multiple tabs.
Workspace − It refers to the location on your system’s file system where projects created using Eclipse will be saved.
Perspective − It is a personal preference for which menus and windows are open at any one time. Eclipse has a number of perspectives configured for typical usage, such as writing code, debugging etc. You can also switch to a different perspective when your activity changes. Perspectives are also customizable.
Build application packages – eclipse
Android applications are distributed in a single file/package with an .apk extension. The Android Package (.apk) is similar to a .jar or .zip file. Each .apk contains a number of mandatory files that must be present. The most important file is the AndroidManifest.xml.
The manifest file does a number of things −
The steps to build a distributable project i.e. .apk in eclipse are illustrated below −
Call logs
The code for call logs is given below.
import android droid = android.Android() mylog = droid.getConstants("android.provider.Calllog$Calls").result calls = droid.queryContent(mylog["CONTENT_URI"],["name","number","duration"]).result for c in calls: print c
Connecting to windows os
Step 1 − Download and Install the USB Driver for Windows.
Step 2 − Setup your device −
Start SL4A from All apps screen on the device.
Tap the Menu button → View.
Choose the interpreters from the list.
Tap the Menu button → Start Server.
Select Public (to connect over Wi-Fi) or Private(to connect over USB).
Dalvik debug monitor service
Android ships a debugging tool, Dalvik Debug Monitor Service (DDMS). This tool provides additional services such as port-forwarding services, screen capture on device, incoming call and SMS spoofing etc.
When DDMS starts, it connects to adb. A VM monitoring service is created between adb and DDMS, when a device is connected. This service notifies DDMS when a VM on the device is started or terminated.
Once the VM starts running, its process id is sent to the DDMS via adb and the adb daemon opens a connection to the VM’s debugger. DDMS can now talk to the VM using a custom wire protocol.
Development environment
You must download and install several pre-requisites before you can start developing with SL4A.
Email-based applications
Email based applications are one of the most common utilities available in a mobile device. One can use the sendEmail API call available through the SL4A Android facade.
This function takes three parameters −
to_address − a comma-separated list of recipients.
title − represents the title of the email message.
message − represents the message to be sent.
Examples
A simple Toast Example
import android droid = android.Android() uname = droid.getInput("Enter your name") print uname droid.makeToast("Hello %s" %uname.result)
A Horizontal Progress Bar
import android droid = android.Android() title = "Progress" str = "Loading..." droid.dialogCreateHorizontalProgress(title,str,100) droid.showDialog() for x in range(0,99) time.sleep(0.1) droid.dialogSetCurrentProgress(x) droid.dialogDismiss()
Facades
The façade simplifies the script’s access to the underlying Android API. SL4A exposes the Android Framework API to scripts through an extensive set of facades like AndroidFacade, BluetoothFacade, ActivityManagerFacade, CommonIntentsFacade, etc.
SL4A functionality offers a basket of rich functionalities like Camera, Location, Battery Manager, Media Player, Media Recorder and many more.
Install python 3 for android

Install the Py4A app. The Python for Android app is built to run solely on
Android devices. You should use this app together with SL4A.
You can pick any version of Py4A, but bare in mind the supported version on Android:
- Python 2 requires Android Device >= 1.6
- Python 3 requires Android Device >= 2.3.1
The git repository is:
Install sl4a

First enable installation of programs from unknown sources. By default Android devices can only install apps from the Google Play Store.
You have to enable the permission ‘Install from Unknown Sources’, by going to Settings -> Security -> Unknown Sources and tap the box.
Installing eclipse on a development machine
Eclipse was developed as an extensible, Integrated Development Environment (IDE) written in Java language. It requires an installation of Java to work. Eclipse comes in many flavors − Classic, Galelio, Luno, Mars, Neon, etc.
It is distributed in a single .zip file. All you have to do is unpack the program contents. The extracted folder has an Eclipse.exe file. Double click the file to start the program.
Installing plugins for eclipse
One needs to configure Eclipse to be able to develop SL4A applications. Once the prerequisites are installed successfully on the host, the following plugins for Eclipse must be added −
The following steps can be used to install plugins on Eclipse −
Step 1 − Click Help.
Step 2 − Select Install New Software.
Step 3 − Click Add.
Step 4 − Specify the name and the URL to access the plugin. Click OK.
Step 5 − Select all the tools and click Next. The plugin installation starts
Installing sl4a
At times, you may want to write scripts on the device and execute them. The Scripting Layer for Android helps achieve the same. To install SL4A on your device, follow the steps given below −
Download the SL4A.apk file on your device.
Launch the .apk file from the notifications screen.
Select Install on the next screen to actually install SL4A.
Alternatively, if you choose to use an emulator as against an android device, install SL4A using the browser inside the emulator. The SL4A installation initial screen on a device is shown below.
Java development kit (jdk)
To begin with, you should have a recent version of JDK (JDK 5 or upwards) installed on your system.
To confirm that a compatible version of the JDK installed available to the environment, execute the following on the command line or console terminal, as follows −
$javac –version $java –version
Note − Set the PATH environment variable to jdk/bin folder
Launch on boot scripts
These scripts are launched whenever the device boots. The Launch on Boot preferences screen is an application that lets you specify the device’s boot preferences. The utility supports execution of multiple scripts via a Master script. The Master script launches the other scripts.
Libraries and runtime
This forms the second layer of the architecture. It includes a set of hardware optimized C, C libraries, also referred to as the native layer. Examples include Media Libraries, SQLite, SSL, Bionic, WebKit etc.
The Android Runtime comprises of two different components − the Dalvik VM and Core Libraries. The Dalvik VM provides an execution environment for the applications on the Android Platform. The set of core libraries provides most of the functionality available in Java APIs.
Location-based actions
Library, church are the locations that you may frequently visit and you definitely want to silence your phone when you are there. SL4A allows you to build scripts that will track your location and take specific actions.
Orientation-based actions
SL4A lets us run scripts depending on the orientation and movement of the device. The startSensingTimedAPI is used to determine the orientation and movement of the device.
Prerequisites
Before you start proceeding with this tutorial, we are assuming that you are already aware about the Python. If you are not well aware of these concepts, then we will suggest you to go through our short tutorials on Python.
Python interpreter in eclipse
Follow the given steps to configure Python Interpreter in Eclipse.
Step 1 − Select Windows → Preferences.
Step 2 − Go to PyDev → Interpreter → Python.
Step 3 − Click the New button.
Step 4 − Specify a name for the interpreter. In the Location field, enter the path to python.exe. For example, C:Python26python.exe
Step 5 − Click OK.
Quick response (qr) codes
Most Android devices include a native barcode scanner. SL4A supports importing QR codes directly into the editor. A QR code can only encode 4,296 characters of content. Hence, this method of distribution is suitable for short scripts.
Script interpreters
SL4A acts a scripting host. It supports many scripting languages such as Python, Ruby, Lua, BeanShell, JavaScript and TCL . SL4A can be extended by incorporating new scripting languages dynamically by developing a new SL4A interpreter for that scripting language.
Each script runs in its own interpreter instance. Hence, multiple scripts can run simultaneously without affecting each other.
Scripting on android
You may prefer your favorite Python editor whatever it may be (vim/emacs fans here? PyCharm? Atom?)
All scripts are stored in /sl4a/scripts/
A simple program (Spaceship Launch):
Sdk components
The directory tree where you installed the Android SDK, contains a list of folders containing documentation, sample code and a number of tools. Navigating to the tools subdirectory reveals a number of executable files.
Discussed below are some important components within the Android SDK.
Sdk manager
The Android SDK Manager separates the SDK tools, platforms, and other components into packages for easy access and management. The SDK can be configured to check for new or updated SDK packages and add-on tools.
By default, Android Studio does not check for Android SDK updates. To enable automatic Android SDK checking −
Step 1 − Choose File → Settings → Appearance & Behavior → System Settings → Updates.
Step 2 − Check the Automatically check updates for Android SDK checkbox and select an update channel.
Step 3 − Click OK or Apply to enable the update checking.
The SDK Update Sites tab displays the sites that Android Studio checks for Android SDK and third-party updates. You can add other sites that host their own Android SDK addons, then download the SDK add-ons from those sites.
Sl4a — android architecture
The Android software stack comprises of different layers, each layer manifesting well-defined behavior and providing specific services to the layer above it. The following figure presents a broad architecture of Android with its primary components.
Sl4a — architecture
SL4A has three main components. They are as follows −
- Script Interpreters
- Android RPC Client
- Facades
In this chapter, we will discuss more about these three components.
Sl4a — development environment
This chapter details the procedure to set up your development environment. It also discusses how to configure your device to use SL4A.
Sl4a — exploring android api
SL4A is based on the Facade Design Pattern to communicate with the underlying Android API. This chapter explains the working of Façade Design Pattern and the different SL4A API facades.
Sl4a — packaging & distributing
This chapter explains the ways to package and distribute scripts using Eclipse and QR codes.
Sl4a — python library
Python has a standard library, which includes a wide variety of routines that help you code and reuse these codes easily. A Module is a Python file that has definitions of variables and a set of related routines or functions.
Some of the core Modules provided by the Python library are as follows −
Sl4a — scripting layer for android
Android scripting is a handy tool for simple tasks such as automation and prototyping as against using the Java programming language for the same. The Scripting Layer for Android (SL4A) provides a platform for multiple scripting solutions on the android platform.
Sl4a — working with eclipse
This chapter will walk you through the basics of Eclipse IDE and configuring it to develop Python scripts for Android.
Sl4a and android api facades
SL4A hosts interpreters for each language it supports. The interpreters access the underlying Android APIs through an interface called a façade.
The following table lists the top-level facades and the functionality they provide −
Sl4a и android api фасады
SL4A содержит переводчиков для каждого языка, который он поддерживает. Интерпретаторы получают доступ к базовым API-интерфейсам Android через интерфейс, называемый фасадом.
В следующей таблице перечислены фасады верхнего уровня и предоставляемые ими функциональные возможности.
S.No. | Android API Фасад и описание |
---|---|
1 | ActivityResultFacade Он устанавливает, как ваш скрипт будет возвращать информацию в виде действия. Этот метод подразумевает, что ваш скрипт вернет какой-то результат. Тип результата может быть установлен либо RESULT_CANCELED (0), либо RESULT_OK (-1) |
2 | AndroidFacade Он обеспечивает доступ к общим функциям Android, таким как чтение ввода, уведомления, запуск компонентов приложения и т. Д. |
3 | ApplicationManagerFacade Перечислите все доступные и запущенные пакеты, запустите действие, создайте свой диспетчер задач или завершите определенный набор пакетов. |
4 | BatteryManagerFacade Показывает менеджер батареи и позволяет отслеживать состояние батареи, состояние, уровень типа, напряжение и т. Д. |
5 | BluetoothFacade Предоставляет доступ к возможностям Bluetooth от основных функций подключения до отправки и получения как ASCII, так и двоичных данных. Этот фасад требует как минимум API уровня 5. |
6 | CameraFacade Этот метод обеспечивает доступ ко всем функциям, связанным с камерой. Позволяет делать снимки с помощью камеры устройства и сохранять ее по указанному пути. Он предоставляет две функции, а именно cameraCapturePicture и cameraInteractiveCapturePicture. Эти функции предназначены исключительно для использования объектива на задней панели устройства. |
7 | CommonIntentsFacade Предоставляет доступ к общим Android Intents, таким как открытие списка контактов, поиск по карте, запуск действия по действию и т. Д. |
8 | ContactsFacade Предоставляет доступ к контактам, таким как предоставление списка контактов для выбора контакта, опроса списка контактов по атрибутам и получения списка всех контактов с их идентификаторами и атрибутами. Некоторые методы, предоставляемые фасадом, включают contactsGet, pickContact, contactsGetById и т. Д. |
9 | EventFacade ОС Android поддерживает очередь событий для асинхронной передачи информации между приложениями. Этот фасад предоставляет функции для управления очередью событий, такие как очистка существующих событий, публикация новых событий, распечатка, регистрация и отмена регистрации широковещательных сигналов и т. Д. Примеры методов включают в себя eventPost, eventClearBuffer и т. Д. |
10 | EyesFreeFacade Доступно на устройствах ниже уровня API 4. Это позволяет сценариям говорить с использованием технологии преобразования текста в речь. Этот фасад теперь заменен TextToSpeechFacade. Единственная доступная функция – это ttsSpeak. |
11 | LocationFacade Предоставляет функции, которые позволяют отслеживать текущее местоположение либо с помощью GPS, либо с помощью информации о вышке сотовой связи, которую вы используете в данный момент. Эта функция требует активного подключения к Интернету для фактического поиска. Фасад предоставляет такие методы, как getLastKnownLocation, startLocating, stopLocating, readLocation и т. Д. |
12 | MediaPlayerFacade Позволяет воспроизводить мультимедийные файлы, управлять мультимедийным проигрывателем, запрашивать текущее состояние мультимедийного проигрывателя и получать информацию о мультимедийных файлах. mediaIsPlaying, mediaPlayInfo и mediaPlayList возвращает текущее состояние медиаплеера. Вызов функции startActivity запускает медиаплеер. Такие функции, как mediaPlay, mediaPlayPause, mediaPlayClose, mediaPlaySeek, mediaPlayStart и mediaPlaySetLooping, используются для управления медиаплеером. |
13 | MediaRecorderFacade Этот фасад обеспечивает возможность аудио и видео записи. Функции startInteractiveVideoRecording, RecorderStartMicrophone, RecorderCaptureVideo используются для запуска и начала аудио / видео записи соответственно. Чтобы завершить ранее начатую запись, вызовите функцию рекордера Stop. |
14 | PhoneFacade Обеспечивает программную доступность основных операций телефона, таких как отслеживание состояния телефона, состояние роуминга, инициирование вызовов, информация с SIM-карты и т. Д. Примеры методов включают phoneCallNumber, phoneDialNumber, getCellLocation и т. Д. |
15 | PreferencesFacade Предоставляет доступ к общим настройкам, таким как получение списка существующих настроек и чтение, изменение и добавление новых настроек. В релизе SL4A r4 поддерживаются три функции: prefGetAll, prefGetValue и prefPutValue. |
16 | SensorManagerFacade Позволяет отслеживать данные датчика, такие как свет, ускорение, магнитное поле и ориентация. Для запуска / остановки считывания используйте вызовы функций startSensing (устарел и заменен на startSensingThreshold и startSensingTimed by SL4r4) и вызовы функции stopSensing. readSensors, SensorGetLight, ДатчикиReadAccelerometer, ДатчикиReadMagnetometer и ДатчикиReadOrientation являются функциями, предоставляемыми этим фасадом. |
17 | SettingsFacade Предоставляет доступ к различным настройкам телефона, таким как громкость звонка, яркость экрана, режим полета, вибрация, громкость носителя и т. Д. Функции, предоставляемые этим фасадом: checkAirplaneMode, checkRingersilentMode и checkScreenOn (по крайней мере, уровень API 7), getVibrateMode, setScreenTimeout, toggleVibrateMode setRingerVolume и т. Д. |
18 | SignalStrengthFacade Позволяет контролировать уровень сигнала телефона. Вызовите функцию startTrackingSignalStrengths, чтобы начать сбор данных. Вызовите функцию readSignalStrengths, чтобы начать сбор данных. Чтобы завершить процесс, вызовите функцию stoptrackingSignalStrengths. Требуется как минимум уровень API 7. |
19 | SmsFacade Имеет функции для удаления, чтения, маркировки и отправки SMS-сообщений. Примеры функций, предоставляемых этим фасадом, включают smsMarkMessageRead, smsDeleteMessage, smsSend и т. Д. |
20 | SpeechRecognitionFacade Позволяет добавить в скрипт функцию распознавания речи. Он имеет только одну функцию по имени признатьSpeech. |
21 | TextToSpeechFacade Предоставляет услуги TTS для API4 и более поздних версий. Чтобы говорить на устройстве, используйте функцию ttsSpeak. Чтобы определить, завершена ли функция разговора, используйте функцию ttsIsSpeaking. |
22 | ToneGeneratorFacade Генерирует тоны DTMF для заданных цифр. Чтобы использовать его, вы должны вызвать функцию generateDtmfTones. |
23 | UiFacade Предоставляет функции для создания элементов пользовательского интерфейса, таких как текстовые поля, флажки, средства выбора даты и т. Д. Он также позволяет интерактивно использовать HTML-страницы. |
24 | WakeLockFacade Предоставляет функции для создания wake-блокировки, включая wakeLockAcquireBright, wakeLockAcquireDim, wakeLockAcquireFull и wakelockAcquirePartial. |
25 | WebCamFacade Этот фасад требует как минимум уровня API 8. Он позволяет передавать потоки MJPEG с передней камеры устройства в сеть. Для запуска / остановки веб-камеры используйте функции webcamStart и webcamStop соответственно. Чтобы настроить качество видео во время потоковой передачи, используйте функцию webcamAdjustQuality. |
26 | WifiFacade Помогает вам контролировать радио Wi-Fi на вашем устройстве. Это позволяет сценариям запрашивать состояние подключения Wi-Fi, искать точки доступа, подключаться и отключать сети Wi-Fi и удерживать блокировку Wi-Fi во время выполнения сценария. |
ActivityResultFacade
Он устанавливает, как ваш скрипт будет возвращать информацию в виде действия. Этот метод подразумевает, что ваш скрипт вернет какой-то результат. Тип результата может быть установлен либо RESULT_CANCELED (0), либо RESULT_OK (-1)
AndroidFacade
Он обеспечивает доступ к общим функциям Android, таким как чтение ввода, уведомления, запуск компонентов приложения и т. Д.
ApplicationManagerFacade
Перечислите все доступные и запущенные пакеты, запустите действие, создайте свой диспетчер задач или завершите определенный набор пакетов.
BatteryManagerFacade
Показывает менеджер батареи и позволяет отслеживать состояние батареи, состояние, уровень типа, напряжение и т. Д.
BluetoothFacade
Предоставляет доступ к возможностям Bluetooth от основных функций подключения до отправки и получения как ASCII, так и двоичных данных. Этот фасад требует как минимум API уровня 5.
CameraFacade
Этот метод обеспечивает доступ ко всем функциям, связанным с камерой. Позволяет делать снимки с помощью камеры устройства и сохранять ее по указанному пути. Он предоставляет две функции, а именно cameraCapturePicture и cameraInteractiveCapturePicture. Эти функции предназначены исключительно для использования объектива на задней панели устройства.
CommonIntentsFacade
Предоставляет доступ к общим Android Intents, таким как открытие списка контактов, поиск по карте, запуск действия по действию и т. Д.
ContactsFacade
Предоставляет доступ к контактам, таким как предоставление списка контактов для выбора контакта, опроса списка контактов по атрибутам и получения списка всех контактов с их идентификаторами и атрибутами. Некоторые методы, предоставляемые фасадом, включают contactsGet, pickContact, contactsGetById и т. Д.
EventFacade
ОС Android поддерживает очередь событий для асинхронной передачи информации между приложениями. Этот фасад предоставляет функции для управления очередью событий, такие как очистка существующих событий, публикация новых событий, распечатка, регистрация и отмена регистрации широковещательных сигналов и т. Д. Примеры методов включают в себя eventPost, eventClearBuffer и т. Д.
EyesFreeFacade
Доступно на устройствах ниже уровня API 4. Это позволяет сценариям говорить с использованием технологии преобразования текста в речь. Этот фасад теперь заменен TextToSpeechFacade. Единственная доступная функция – это ttsSpeak.
LocationFacade
Предоставляет функции, которые позволяют отслеживать текущее местоположение либо с помощью GPS, либо с помощью информации о вышке сотовой связи, которую вы используете в данный момент. Эта функция требует активного подключения к Интернету для фактического поиска.
MediaPlayerFacade
Позволяет воспроизводить мультимедийные файлы, управлять мультимедийным проигрывателем, запрашивать текущее состояние мультимедийного проигрывателя и получать информацию о мультимедийных файлах. mediaIsPlaying, mediaPlayInfo и mediaPlayList возвращает текущее состояние медиаплеера.
MediaRecorderFacade
Этот фасад обеспечивает возможность аудио и видео записи. Функции startInteractiveVideoRecording, RecorderStartMicrophone, RecorderCaptureVideo используются для запуска и начала аудио / видео записи соответственно. Чтобы завершить ранее начатую запись, вызовите функцию рекордера Stop.
PhoneFacade
Обеспечивает программную доступность основных операций телефона, таких как отслеживание состояния телефона, состояние роуминга, инициирование вызовов, информация с SIM-карты и т. Д. Примеры методов включают phoneCallNumber, phoneDialNumber, getCellLocation и т. Д.
PreferencesFacade
Предоставляет доступ к общим настройкам, таким как получение списка существующих настроек и чтение, изменение и добавление новых настроек. В релизе SL4A r4 поддерживаются три функции: prefGetAll, prefGetValue и prefPutValue.
SensorManagerFacade
Позволяет отслеживать данные датчика, такие как свет, ускорение, магнитное поле и ориентация. Для запуска / остановки считывания используйте вызовы функций startSensing (устарел и заменен на startSensingThreshold и startSensingTimed by SL4r4) и вызовы функции stopSensing. readSensors, SensorGetLight, ДатчикиReadAccelerometer, ДатчикиReadMagnetometer и ДатчикиReadOrientation являются функциями, предоставляемыми этим фасадом.
SettingsFacade
Предоставляет доступ к различным настройкам телефона, таким как громкость звонка, яркость экрана, режим полета, вибрация, громкость носителя и т. Д. Функции, предоставляемые этим фасадом: checkAirplaneMode, checkRingersilentMode и checkScreenOn (по крайней мере, уровень API 7), getVibrateMode, setScreenTimeout, toggleVibrateMode setRingerVolume и т. Д.
SignalStrengthFacade
Позволяет контролировать уровень сигнала телефона. Вызовите функцию startTrackingSignalStrengths, чтобы начать сбор данных. Вызовите функцию readSignalStrengths, чтобы начать сбор данных. Чтобы завершить процесс, вызовите функцию stoptrackingSignalStrengths. Требуется как минимум уровень API 7.
SmsFacade
Имеет функции для удаления, чтения, маркировки и отправки SMS-сообщений. Примеры функций, предоставляемых этим фасадом, включают smsMarkMessageRead, smsDeleteMessage, smsSend и т. Д.
SpeechRecognitionFacade
Позволяет добавить в скрипт функцию распознавания речи. Он имеет только одну функцию по имени признатьSpeech.
TextToSpeechFacade
Предоставляет услуги TTS для API4 и более поздних версий. Чтобы говорить на устройстве, используйте функцию ttsSpeak. Чтобы определить, завершена ли функция разговора, используйте функцию ttsIsSpeaking.
ToneGeneratorFacade
Генерирует тоны DTMF для заданных цифр. Чтобы использовать его, вы должны вызвать функцию generateDtmfTones.
UiFacade
Предоставляет функции для создания элементов пользовательского интерфейса, таких как текстовые поля, флажки, средства выбора даты и т. Д. Он также позволяет интерактивно использовать HTML-страницы.
WakeLockFacade
Предоставляет функции для создания wake-блокировки, включая wakeLockAcquireBright, wakeLockAcquireDim, wakeLockAcquireFull и wakelockAcquirePartial.
WebCamFacade
Этот фасад требует как минимум уровня API 8. Он позволяет передавать потоки MJPEG с передней камеры устройства в сеть. Для запуска / остановки веб-камеры используйте функции webcamStart и webcamStop соответственно. Чтобы настроить качество видео во время потоковой передачи, используйте функцию webcamAdjustQuality.
WifiFacade
Помогает вам контролировать радио Wi-Fi на вашем устройстве. Это позволяет сценариям запрашивать состояние подключения Wi-Fi, искать точки доступа, подключаться и отключать сети Wi-Fi и удерживать блокировку Wi-Fi во время выполнения сценария.
Time-based / elapsed-time-based triggers
These triggers are used to perform actions at a specific time of day. The 24-hour time format should be used to specify the time. Examples include a script to set alarm, reminders etc. As against a time-based trigger, an elapsed time-based trigger executes the script after an elapsed number of time. The snooze option on an alarm application is based on this concept.
Triggers
A trigger defines a set of actions that must be performed in response to an action/event. Triggers may be added as well as deleted. The /sdcard/sl4a/scripts directory allows you to choose a script to run when an event is triggered. The list of options that may trigger you script includes battery, location, phone, sensors and signal strength.
Using sl4a
The SL4A system is suited for the following kinds of tasks −
RAD programming − With SL4A, it is possible to use Rapid Application Development (RAD) approach to create a prototype application quickly. You can create a full-blown Android application if the feasibility of the idea is confirmed.
Test scripts − It can be used to write test scripts.
Building Utilities − Utility scripts or tools that perform small tasks or automate certain aspects of repetitive tasks can be built using SL4A.
What is a facade design pattern?
A facade is an object that provides an interface that simplifies the access to the related interfaces in the application. In other words, a façade insulates the working of the libraries from the client and acts as an entry point to each subsystem level. Thus, the clients communicate only through their facades. The following illustration explains the same.
What is sl4a?
The Scripting Layer for Android (SL4A) is a library that provides a platform to write simple scripts to automate tasks on an android device using languages other than JAVA.
SL4A, originally called Android Scripting Environment (ASE), was first announced on the Google Open Source blog in June 2009. The project saw the light of the day primarily through the efforts of Damon Kohler and it has grown through the contributions of other developers.
It supports most popular scripting languages. These include −
- Beanshell 2.0b4
- JRuby 1.4
- Lua 5.1.4
- Perl 5.10.1
- PHP 5.3.3
- Python
- Rhino 1.7R2
- Javascript
- TCL
Why sl4a – scripting languages vs java
One of the first questions one would probably ask is, “Why use SL4A instead of Java?”
Firstly, not everyone is a fan of Java. Scripting languages provide an easy programming environment as compared to Java.
Secondly, the language requires the use of an edit/compile/run design loop. This means that you edit, re-compile and then run the application each time you desire some modification. On the contrary, scripts are interpreted and executed on the fly. Moreover, SL4A even makes it possible, in many cases, to reuse code written for a desktop environment.
The following figure illustrates scripts written in Python targeting SL4A and in Java respectively.
Wifi scanner
The following code lists all available Wi-Fi access spots −
import android, time def main(): global droid droid = android.Android() while not droid.wifiStartScan().result: time.sleep(0.25) networks = {} while not networks: for ap in in droid.wifiGetScanResults().result: networks[ap[‘bssid’]] = ap.copy() droid.dialogCreateAlert(‘Access Points’) droid.dialogSetItems([‘%(ssid)s,%(level)s,%(capabilities)s’ % ap for ap in networks.values() ]) droid.dialogSetPositiveButtonText(‘OK’) dorid.dialogShow() if __name__=’__main__’: main()
Добавление интерпретатора python
Чтобы установить интерпретатор Python на устройстве, выполните следующие действия:
Шаг 1 – Запустите приложение SL4A.
Шаг 2 – Нажмите кнопку меню .
Шаг 3 – отобразится список параметров. Выберите Просмотр .
Шаг 4 – Выберите опцию Интерпретатор в диалоговом окне. Нажмите Добавить .
Шаг 5 – Отображается список доступных для загрузки переводчиков. Выберите Python 2.62 (или выше).
Шаг 1 – Запустите приложение SL4A.
Шаг 2 – Нажмите кнопку меню .
Шаг 3 – отобразится список параметров. Выберите Просмотр .
Шаг 4 – Выберите опцию Интерпретатор в диалоговом окне. Нажмите Добавить .
Шаг 5 – Отображается список доступных для загрузки переводчиков. Выберите Python 2.62 (или выше).
Чтобы установить интерпретатор Python на эмуляторе, выполните следующие действия:
Шаг 1 – Убедитесь, что эмулятор работает в фоновом режиме.
Шаг 2 – Загрузите python_for_android_rx.apk.
Шаг 3 – В командной строке терминала перейдите к месту, где хранится файл apk, и введите в командной строке следующее:
Шаг 1 – Убедитесь, что эмулятор работает в фоновом режиме.
Шаг 2 – Загрузите python_for_android_rx.apk.
Шаг 3 – В командной строке терминала перейдите к месту, где хранится файл apk, и введите в командной строке следующее:
adb install python_for_android_rx.apk
SL4A поддерживает скриптовый движок для нескольких языков. Список некоторых специфичных для языка apk файлов упомянут ниже –
- beanshell_for_android_rx.apk
- jruby_for_android_rx.apk
- lua_for_android_rx.apk
- perl_for_android_rx.apk
- python_for_android_rx.apk
- rhino_for_android_rx.apk
Избегайте пробелов в именах каталогов
Некоторые инструменты, например эмулятор, могут не запуститься, если вы установите SDK в каталог, имя которого имеет пробелы. Это относится и к местоположению по умолчанию: C:Program Filesandroid-sdk-windows.
Подключение к ос windows
Шаг 1 – Загрузите и установите драйвер USB для Windows.
Шаг 2 – Настройте ваше устройство –
Запустите SL4A на экране Все приложения на устройстве.
Нажмите кнопку Меню → Вид .
Выберите переводчиков из списка.
Нажмите кнопку Меню → Запустить сервер .
Выберите «Общий» (для подключения по Wi-Fi) или « Частный» (для подключения через USB).
Запустите SL4A на экране Все приложения на устройстве.
Нажмите кнопку Меню → Вид .
Выберите переводчиков из списка.
Нажмите кнопку Меню → Запустить сервер .
Выберите «Общий» (для подключения по Wi-Fi) или « Частный» (для подключения через USB).
Шаг 3 – Добавьте переменную среды (переменную пользователя) AP_PORT и значение 9999 .
Android SDK и Eclipse обсуждались в следующих главах.
Программа hello world на языке python for android
Практически в каждой вводной статье по программированию ее автор считает своим долгом написать программу «hello world». Я делаю это здесь для того, чтобы продемонстрировать несколько способов для написания и тестирования Python-кода с помощью SL4A. Мой код выглядит следующим образом.
import android droid = android.Android() result = droid.makeToast(‘Hello, world!’)
Каждый скриптовый язык SL4A использует файл импорта — в случае Python это файл android.py — для формирования интерфейса между скриптом и поддерживающими API-интерфейсами Android. Этот код можно ввести непосредственно на своем устройстве в интерпретаторе (см. рисунок 9) или с помощью редактора.
Чтобы использовать интерпретатор Python, запустите его на экранеInterpreters, для чего выберите опцию Python 2.6.2. На появившемся в результате экране вы сможете ввести показанный выше код; после ввода последней строки вы должны увидеть всплывающее окно со словами: «Hello, world!»
Текстовый ввод как на эмулированном, так и на реальном устройстве может оказаться утомительным занятием. Python предоставляет среду IDLE (консоль/редактор), которая в сочетании с инструментом ADB очень удобна для написания кода на персональном компьютере и тестировании его на Android-устройстве.
Вам потребуется лишь локальная копия файла android.py. Вы можете извлечь ее из файла python_extras_r14.zip, доступного на странице загрузки SL4A, или передать ее с устройства с помощью команды adb pull. Кроме того, весьма удобно иметь каталог с именем SDCARD в корне своего первичного системного диска для зеркалирования всего содержимого эмулируемого устройства.
Рисунок 1. выбор нужных опций android sdk для загрузки
Все необходимое для этой статьи я установил и протестировал на машине под управлением 64-разрядной версии Windows® 7.
Эта статья посвящена разработке приложений для платформы Android с помощью языка Python, поэтому вполне очевидно, что вам необходимо установить Python на своей машине разработки. На Windows-компьютерах язык Python изначально не установлен. На момент написания этой статьи актуальная версия пакета SL4A Python имела номер 2.6.2.
Рекомендуется добавить несколько ссылок на Android SDK в директиве PATH- это упростит запуск SDK Manager и других инструментов. Чтобы сделать это в среде Windows 7, выполните следующие шаги.
Рисунок 10. экран уведомления android
Нажмите на сообщение, чтобы увидеть фактический присвоенный номер порта. В нашем случае для второго значения TCP в командеadb forward мы используем номер порта 42306. Теперь вы готовы к тому, чтобы написать какой-либо Python-код и протестировать его на устройстве.
Рисунок 11. скрипт hello world в python-консоли idle
Если вы запустили сервер и выполнили команду adb forward, то должны увидеть Toast-сообщение, показанное на рисунке 12, и не должны увидеть никаких ошибок.
Рисунок 12. всплывающее сообщение hello world
В Windows-системе для запуска окна редактирования в среде IDLE нажмите: File > New Window. Это окно предоставляет все необходимые средства для редактирования и тестирования эмулированного или реального Android-устройства на своей машине разработки.
Рисунок 2. экран установки sl4a
Нажмите Install для запуска процесса.
Заключительный шаг состоит в установке интерпретатора Python на вашем устройстве. Это можно сделать с использованием любого из нескольких методов. Из эмулятора вы можете ввести текст sl4a download в поисковом поле браузера (рис. 3).
Рисунок 3. экран загрузки sl4a
Нажмите на ссылку PythonForAndroid_r4.apk для запуска процесса загрузки. Чтобы действительно запустить установщик, просмотрите экран уведомления, для чего нажмите на него и переместитесь по нему от верхней до нижней части экрана. Нажмите на сообщение Download complete для запуска установщика Python for Android (рис. 4).
Рисунок 6. окно android sdk and avd manager
Выберите Virtual devices в дереве каталогов для отображения всех ранее определенных виртуальных Android-устройств (AVD — Android virtual device) в панели подробностей. Чтобы создать новый эмулятор устройства, нажмите New. В окне Create New Android Virtual Device (AVD) введите необходимую информацию в полях Name, Target и SD Card Size.
На рисунке 7 показаны параметры моего тестового устройства. Имя устройства не должно содержать пробелов; для хранения данных необходимо выделить не менее 100 МБ. Выберите соответствующий номер версии Android для своего целевого устройства. Этот ниспадающий список отображает только доступные опции, загруженные ранее.
Рисунок 8. опции запуска avd-устройства
В состав Android SDK входит еще один обязательный инструмент под названием ADB (Android Device Bridge). Этот инструмент поддерживает такие функции, как установка приложений (apk-файлы), копирование файлов на устройство или с устройства, выдача команд оболочки на устройство.
Кроме того, инструмент ADB используется для запуска SL4A на устройстве, что позволяет разработчику запускать программы на исполнение с рабочей станции. Чтобы установить коммуникационный канал между хостом (рабочей станцией) разработчика и устройством, необходимо с помощью ADB перенаправить TCP/IP-трафик с порта 9999 на конкретный порт на этом устройстве. Откройте командное окно и введите в него следующую командную строку:
$ adb forward tcp:9999 tcp:42306
Второй номер порта соответствует устройству. В последней версии SL4A этот номер можно задать в предпочтениях. В стандартном выпуске вы должны использовать номер, который предоставит вам SL4A.
Теперь запустите SL4A, а затем нажмите Menu. В области с шестью опциями в нижней части окна нажмите View, а затем нажмитеInterpreters (рис. 9).
Рисунок 9. запуск удаленного сервера из меню interpreters системы sl4a
Нажмите еще раз Menu, а затем нажмите Private для запуска сервера в приватном режиме.
Для реального устройства различие состоит в том, что опция Private запускает сервер с использованием USB-порта, а опция Public использует Wi-Fi. Если вы снова посмотрите страницу уведомлений, то увидите, что сервис SL4A Service исполняется (рис. 10).
Установка и настройка
Прежде чем вы сможете приступить к разработке с помощью SL4A, необходимо загрузить и установить несколько обязательных компонентов. Первым их них является полный комплект разработчика Java Development Kit (JDK). Его последнюю версию можно найти на сайте Oracle для разработчиков.
Затем вам потребуется комплект Android software development kit (SDK). На основном сайте для Android-разработчиков имеется два варианта загрузки: в виде zip-файла и в виде exe-файла. Если вы загрузите этот exe-файл и запустите его на исполнение, на экране появится окно, в котором вы должны выбрать, какие версии SDK и файлов поддержки вы хотите установить (см. рис. 1).