Всего Python For Android поддерживает работу с 5-ю сенсорами: светоуловитель, локатор, G-сенсор, ориентатор и магнитометр. В принципе, на разных смартфонах разные наборы сенсоров, а так же разный уровень точности измерений, поэтому, прежде чем браться за серьёзные скрипты, как следует поэкспериментируйте и разберитесь что, куда и как.
Чтобы начать работу с сенсорами нужно ввести команду:
где droid - экземпляр класса Android(). Получить уровень освещенности окружающего пространства можно таким образом:
| Python | 1
2
| p=droid.sensorsGetLight()
print(p.result) |
|
На этой функции заострять внимание я не буду, так как светочувствительный элемент есть далеко не на всех смартфонах.
Далее: измеритель магнитных полей - возвращает координаты в пространстве(x,y,z). Вот только чего координаты, я, честно говоря, так и не понял. . На всякий случай предоставляю функцию:
| Python | 1
| p=droid.sensorsReadMagnetometer() |
|
Ориентатор используется довольно редко:
| Python | 1
| p=droid.sensorsReadOrientation() |
|
Данная функция возвращает ошибочные значения, если поблизости есть металлические предметы или магниты.
Но вот две функции, которые Нам могут действительно пригодиться:
Локатор:
Если Вы хотите связать скрипт с локатором(определение местоположения), то сперва следует включить этот локатор (включать сенсоры(droid.startSensing) не нужно):
Затем введите:
| Python | 1
2
| p=droid.readLocation()
print(p.result) |
|
Функция вернёт целый список аргументов, однако Нас больше всего интересуют параметры: longitude и latitude - долгота и широта. Правда работать придётся с числами типа 38.934816499999997(Double), но никто и не говорил, что сделать программу, связанную с определением местоположения легко. Впрочем, имеются просторы для экспериментов: Вы вполне можете, бродя по улице, делать замеры координат и смотреть, как они изменяются.
И G-сенсор:
| Python | 1
| p=droid.sensorsReadAccelerometer() |
|
Он используется довольно часто, поэтому данную функцию Мы разберём немного подробнее. Если Вы отпечатаете значение р, то увидите список из трёх аргументов: 1. Координаты относительно оси х (поворот в горизонтальное положение, экраном на себя). 2 и 3. Координаты относительно оси у и z (повороты в горизонтальное положение, экраном вверх или вниз). Напишите в интерпретаторе такой скрипт:
| Python | 1
2
3
4
5
6
7
| import android
droid=android.Android()
droid.startSensing()
s=False
while not s==True:
pol=droid.sensorsReadAccelerometer()
print(pol.result) |
|
Он начнёт непрерывно выводить список координат смарта в пространстве относительно осей: поворачивайте свой смарт в разные стороны и смотрите, как будут меняться координаты. Вот ещё один простенький скрипт, который включает беззвучный режим, если Вы поворачиваете смарт влево(экраном на себя):
| Python | 1
2
3
4
5
6
7
8
9
10
| import android
droid=android.Android()
droid.startSensing()
s=False
while not s==True:
p=droid.sensorsReadAccelerometer()
if p.result[0]>6:
droid.toggleRingerSilentMode()
break
droid.stopSensing() |
|
Хотелось бы обратить Ваше внимание на формат выводимых результатов: функция readLocation() возвращает словарь(dict) значений - обращение к одному из параметров нужно производить по имени:
| Python | 1
| print(p.result['network']['longitude']) |
|
А вот sensorsReadAccelerometer() возвращает список(list) аргументов, поэтому для обращения к одному из них нужно использовать индексы:
Чуть не забыл: функция startSensing() может спровоцировать появление предупреждений в панели сообщений. Чтобы этого избежать, вместо startSensing() используйте функцию:
| Python | 1
| droid.startSensingTimed() |
|
В скобках передаются два параметра: 1-й - какой из сенсоров использовать(1-все сенсоры, 2-акселерометр, 3-магнитометр, 4-светоуловитель), 2-й параметр - период "замеров" в долях секунды. К примеру функция:
| Python | 1
| droid.startSensingTimed(2,50) |
|
будет два раза в секунду определять положение смартфона в пространстве.
И последнее замечание: любой написанный Вами скрипт можно запустить в двух режимах: через консоль(нажимаете на значок скрипта и в выпадающем меню выбираете первую кнопку(черный прямоугольник с символами >.)) или в режиме BackGround (в выпадающем меню выбираете второй значок - шестерёнку) - тогда скрипт запустится в "свёрнутом" виде и не будет мешать Вам заниматься своими делами.
|