【问题标题】:Extend the SL4A Android object with a custom stop method使用自定义停止方法扩展 SL4A Android 对象
【发布时间】:2013-06-26 10:04:47
【问题描述】:

我正在使用 SL4A 在 Android 上运行 Python。我有一个脚本来计算如下所示的平均值:

import android
droid = android.Android()
var1 = 10
var2 = 20
var3 = 30
average = float((var1+var2+var3)/3)
droid.makeToast('Average:'+str(average))
f=open('/data/data/com.example.devicecommunication/files/result.txt','w')
f.write(str(average))
f.close()

我的要求是向droid 添加一个名为stop 的方法,这样我就可以在那里定义自己的逻辑。 这可能吗?

【问题讨论】:

  • 你用的是什么语言?这看起来像 Python,对吗?
  • @RaduGheorghiu 是的,编辑了问题
  • @RaduGheorghiu 我想将它添加到 SL4A 中的 Android 类中,然后使用 droid.stop() 访问(而不是作为脚本中的单独方法)。对此有何想法?

标签: android sl4a


【解决方案1】:

你可以在sl4a中用Python定义类和方法,像这样:

class MyDroid():
  def stop(self):
    return "I stopped"

这是你要找的吗?

SL4A 的 Wiki 页面上有很多示例(教程、API 参考、概述):HERE

您可以定义一个全局变量,用于在循环中运行程序,当条件不再满足时,您调用stop 将您带出循环并结束程序。

类似的东西会起作用:

runScript = True

def stop():
  global runSCript
  runScript = False

while runScript:
  --do actions
  if --condition-- :
    stop()

我认为这不是 Python 的最佳实践,但它确实有效..

【讨论】:

  • 你可以做一个do while循环,当调用stop时,while中的条件不再为真,所以程序跳出while结束。
【解决方案2】:

您可以将任何您喜欢的东西绑定到droid 对象...

droid.stop = lambda: 1
print(droid.stop()) # prints 1

目前还不清楚你想做什么。您发布的脚本对 stop 方法没有明显用途。您可以执行以下操作,但我不确定您为什么会这样做:

def stop():
    import sys
    sys.exit()

droid.stop = stop

您需要更详细地解释您要解决的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 2012-09-10
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多