在用Kivy开发Python手机游戏时通过Plyer扩展访问Android传感器

这是一篇发表在kivyspacegame上的文章,讲的是如何使用python在你的安卓设备上访问传感器。这篇教程是为这些用kivy开发python移动apps而写的。Kivy运行速度非常快,并且很容易使用。访问博客以获取更多的关于用Kivy开发游戏的教程。也可以看看google play store上的Helios: Mining Adventure游戏程序。

这篇教程将关注plyer,一个可以读取传感器,发送email,以及将文本转成语音,显示通知等等功能的库。如果你正在用python开发移动运用程序,访问传感器将会是一项很复杂的工作。Plyer大大的将工作简单化。

这篇教程涵盖了安装plyer,构建使用plyer的android包,并且举了一些显示通知,使手机振动,让android设备对你说话的小例子。

(运行在手机上的运用截图)

I. 背景

Android包含访问传感器的内置API.通过python访问Java类比较复杂,这个过程通过pyjnius得以简化。Pyjnius需要一些额外的跑腿的工作以处理一些特性。对于苹果设备来说,用的是pyobjus。Plyer被创造出来是为了简化访问手机传感器的,并且使用的是与平台无关的pythonic的方法。同样的plyer代码可以运行在Windows/Linux/iOS/android。

II. 安装Plyer

在终端下运行下面的命令:

sudo pip install git+https://github.com/kivy/[email protected]

有一个消息会通知你plyer已经安装成功了。你也要确保带有plyer的python-for-android已经安装成功。要不然,当你在你的手机上运行你的代码时,程序将会因你的软件包里没有plyer库而崩溃。

III. 和plyer一起打包

除非你已经在python-for-android中包含了plyer,否则你的软件包里将不会包含plyer,为了解决这个问题,需要将plyer添加到python-for-android:

定位到你的python-for-android目录,例如:

cd /home/kivy/android/python-for-android dist/

运行带正确参数的distribute.sh 以包含plyer,以及其它你需要的东东:

./distribute.sh -m plyer pyjnius jpeg png kivy

IV. 代码:

首先,导入关键的模块:

import kivy
kivy.require('1.8.0')
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.core.window import Window
from plyer import notification, vibrator, tts, email, accelerometer
from kivy.clock import Clock

其次,设置图形:

#setup graphics
from kivy.config import Config
Config.set('graphics','resizable',0)

#Graphics fix
from kivy.core.window import Window;
Window.clearcolor = (0,0,0,1.)

对于这个例子,将有一个主类用于与android api连接。它包含了一些函数以实现这个过程。

class GUI(Widget):
    #this is the main widget that contains the game
    def __init__(self, **kwargs):
        super(GUI, self).__init__(**kwargs)
        #add a label to advertise the blog
        l = Label(text='kivyspacegame.wordpress.com')
        l.x = Window.width/2 - l.width/2
        l.y = Window.height/2
        self.add_widget(l)

        #setup accelerometer
        try:
            #we've already imported the accelerometer from plyer
            #it's very easy to access
            accelerometer.enable()
        except:
            #when you run the code on linux, expect this to happen
            l.text = 'cant enable acceleromteer'

        #setup acceleromter labels
        #We create a label to display accelerometer output
        self.label = Label(text = 'accelerometer:')
        self.label.y = Window.height*0.25
        self.label.x = Window.width*0.5
        self.add_widget(self.label)

        #setup timer to update accelerometer
        #we want to regularly read the accelerometer
        Clock.schedule_interval(self.check_accel, 1.0/60.0)
        #these four functions use other plyer features to talk to the android api
        self.notify()
        self.vibrate()
        self.talk()
        self.email()

    def check_accel(self,dt):
                #update label
                try:
                    self.txt = str(round(accelerometer.acceleration[0],4)) +','
                    + str(round(accelerometer.acceleration[1],4)) + ','
                    + str(round(accelerometer.acceleration[2],4))
                    self.label.text='accelerometer: ' + self.txt
                except:
                    #expect this on linux
                    self.label.text = ' cant read accelerometer'

    def notify(self):
        try:
            #this notification will pop up on ubuntu as well!'
            notification.notify(title="Kivy Notification",message="Plyer Up and Running!",
        app_name="kivy_test",app_icon="icon.png",timeout=10)
        except:
            print 'error notifiying'
    def vibrate(self):
        try:
            #the vibrator will only work on a vibrating device (ie android)
            vibrator.vibrate(time=3)
        except:
            print 'error vibrating'

    def talk(self):
        try:
            tts.speak(message='Resistance is FUTILE. Select an e-mail app.')
        except:
            print 'cant talk'
    def email(self):
        try:
            email.send(recipient = '[email protected]',subject =
            'Thanks!', text ='Enjoyed your lesson')
        except:
            print 'cant email'

最后的代码:

class ClientApp(App):

    def build(self):

        #this is where the root widget goes

        #should be a canvas

        app = GUI()

        return app

if __name__ == '__main__' :

    ClientApp().run()

V. 将应用程序打包

当你的代码已经准备好,并且在linux上运行没问题之后,进入你的发布目录打包运用程序:

cd /home/kivy/android/python-for-android/dist/default

再输入下面的命令,请根据实际情况调整目录。小心不要将不必要的空间给包含进去。这个命令将会在打包成功后将运用程序安装到你的手机上:

./build.py –dir /home/kivy/code/TeachToCode/GuestLessonSensors/ –name “PlyerTest” –package com.molecularflowgames.PlyerTest –version 1.0 –icon /home/kivy/code/TeachToCode/GuestLessonSensors/icon.png –orientation landscape –permission VIBRATE debug installd

这是一个可以在你的运用程序中使用的图标

原文链接:http://bytedebugger.wordpress.com/2014/07/06/guest-post-accessing-android-sensors-with-kivy-via-plyer/

在用Kivy开发Python手机游戏时通过Plyer扩展访问Android传感器

时间: 2024-10-16 14:53:53

在用Kivy开发Python手机游戏时通过Plyer扩展访问Android传感器的相关文章

手机游戏服务器引擎Scut免费开源

scut 官网:http://www.scutgame.com/ Scut是一个开源.免费.稳定.快速开发的手机游戏服务器引擎,支持开发人员使用Python脚本语言或C#语言开发:底层采用C#编写,基于MVC框架思想设计, 开发人员只需要关注如何定义数据实体类及属性,不再需要关注多据库(MSSQL.MySql等)及表设计,Scut会帮助你自动检测生成相应数据库的表结构:它还提供了丰富的AIP和成熟的游戏模块中间件,快速开发你的游戏服务器应用,和Cocos2d-x完美结合,提供基于Cocos2d-

Android手机游戏浅析

1. 游戏对于电脑发展的影响.很多青少年因为有电脑游戏而了解电脑的,正如很多人因为想看家庭电影,而了解VCD一样.人们对电影画面质量的要求越来越高,迫使VCD向DVD转变.而同样是对游戏的质量要求越来越高,迫使电脑的硬件厂商不断提高着电脑硬件的质量.不管你是否相信,有很人多是为了更流畅的玩高端的游戏而去不断更新电脑的硬件设备,曾经测试电脑性能的方式就是在电脑里安装游戏看运行的效果的.所以游戏的发展在一段时期刺激了电脑硬件的发展,电脑硬件的发展又反过来刺激了更出色的游戏的产生 2. 着重讲游戏对于

如何做好手机游戏开发产品的推介

厦门欧页科技 在游戏圈,推介(Pitch)被从业者普遍认为是一种营销行为--研发团队需要向发行商.渠道或投资方推介自己的产品,以获得资金或推广方面的支持.但加拿大独立工作室Kitfox Games总监谭雅 舒特(Tanya X. Short)对此提出了不一样的看法.舒特在Gamasutra的一篇文章中指出,游戏推介既关乎设计,也关乎营销,手机游戏开发团队必须通过推介行为,准确地传达产品的真正价值.设计师和营销人员都希望游戏具备高水准,但双方对游戏水准的评判标尺并不一定. "营销人员更关注销量和炒

Cocos2d-x手机游戏开发中-组合动作

动作往往不是单一,而是复杂的组合.我们可以按照一定的次序将上述基本动作组合起来,形成连贯的一套组合动作.组合动作包括以下几类:顺序.并列.有限次数重复.无限次数重复.反动作和动画.动画我们会在下一节介绍,本节我们重点顺序.并列.有限次数重复.无限次数重复和反动 下面我们通过一个实例介绍一下组合动作的使用,这个实例如下图所示,下图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的动作效果,点击Back按钮可以返回到菜单场景. 下面我们再看看具体的程序

Cocos2d-x手机游戏开发与项目实践具体解释_随书代码

Cocos2d-x手机游戏开发与项目实战具体解释_随书代码 作者:沈大海  因为原作者共享的资源为UTF-8字符编码.下载后解压在win下显示乱码或还出现文件不全问题,现完整整理,解决全部乱码问题,供大家下载. 下载地址:http://download.csdn.net/detail/oyangyufu/7665049

Android安卓手机游戏开发

在android中,事件主要包括点击.长按.拖曳.滑动等操作,这些构成了Android的事件响应,总体来说,所有的事件都由如下三个部分作为基础构成: 按下(action_down),移动(action_move),抬起(action_up).各种响应归根结底都是基于View以及ViewGroup的,这两者中响应的方法分别有: View.java中: publi boolean dispatchTouchEvent(MotionEvent event) public boolean onTouch

海量安卓andriod手机游戏开发手机app开发PDF电子书定制制作下载

本人背靠海量纸质图书,可以制作各种纸质书籍的电子化,有需要可以Q:1481449626 <Andriod移动开发技术与应用>作者:李学华主编 页数:228 出版社:北京市:北京邮电大学出版社 出版日期:2013.08 简介:本书以生动具体的案例介绍android移动开发技术,力求通过实际的应用案例使读者快速掌握android移动开发技术. <移动终端应用开发技术 Android实战>作者:林少丹著 页数:232 出版社:北京市:机械工业出版社 出版日期:2013.02 简介:本书共

手机游戏开发遇人才荒,十万年薪翘首待

随着4G时代已经来临,手机游戏又迎来了新的蓬勃期. 手机游戏开发已经成为拉动经济增长的重要引擎.2009年至2014年,国内手机游戏开发市场迎来了快速发展时期.越来越多的用户通过手机登陆互联网,这也令中国手机游戏开发市场大受裨益. 经过这些年3G时代下的智能手机用户导入期后,业内人士预测,3G/4G手机游戏开发将会呈现迅速发展的势头,相关的游戏开发工程师也将步入极繁荣时期. "随着通讯技术的不断发展,为国内的相关手机游戏开发业注入了强心剂."工信部软件服务业司郭建兵副司长说到. 统计数

Coco2d-x android win7 Python 搭建游戏开发环境

1:我用电脑配置 win7 3 核 内存8G 台式机,一直想研究Coco2d 游戏开发,所以经过一周的需找,终于把环境搭建好了 2:我用的版本是该版本,至于搭建android开发环境省略了, 3: 2.2>安装ndk,为了使用c++/c进行android开发 下载android-ndk-r8e,然后在eclipse或adt bundle中配置ndk路径. 4: 5:采用VS 编译环境 我之前用的VS2010 感觉用着不爽,所以改成现在的VS 2012 , 6:一般用python建立项目: 用py