3

寻找一些指示让我开始。

我的左手有一个运行 ICS 的 SGS2。我已经启动并运行了 SL4A 并安装了 Python 2.6.2

在我的右手里,我有一个通用的中国蓝牙 RFID 阅读器。它工作,它读取标签(它有一个显示器),它与手机配对。

我希望他们玩得很好——我想编写一些脚本来持续监视设备并在传输代码时捕获代码。

我不是 Python 专家,但我已经使用它在 Web 服务器上构建简单的 I/O 作业有一段时间了,所以我几乎可以找到自己的方法。

但不同寻常的是,我在处理这个问题时遇到了真正的问题——我找不到任何“蓝牙和 SL4A 入门”资源来克服建立持久连接和监控输出的第一步。

有小费吗?

4

1 回答 1

8

it seems that what you need is the bluetooth facade. Here are some commands pertaining to bluetooth that might be helpful to you:

bluetoothAccept
bluetoothActiveConnections
bluetoothConnect
bluetoothDiscoveryCancel
bluetoothDiscoveryStart
bluetoothGetConnectedDeviceName
bluetoothGetLocalAddress
bluetoothGetLocalName
bluetoothGetRemoteDeviceName
bluetoothGetScanMode
bluetoothIsDiscovering
bluetoothMakeDiscoverable
bluetoothRead
bluetoothReadBinary
bluetoothReadLine
bluetoothReadReady
bluetoothSetLocalName
bluetoothStop
bluetoothWrite
bluetoothWriteBinary
checkBluetoothState
toggleBluetoothState


To call any of these commands you would do something like

import android
droid = android.Android()
#call your commands with droid.bluetoothcommand
droid.bluetoothDiscoveryStart()
#or
droid.toggleBluetoothState(True)


Here is an example of some bluetooth functions, it is included with SL4A, but I added the comments for clarity:

import android #for bluetooth functions
import time #for waiting

#get everything setup
droid = android.Android()

#turn on bluetooth
droid.toggleBluetoothState(True)

#ask user
droid.dialogCreateAlert('Be a server?')
droid.dialogSetPositiveButtonText('Yes')
droid.dialogSetNegativeButtonText('No')
droid.dialogShow()

#get user response to question
result = droid.dialogGetResponse()

#if the result is 'Yes' ('positive') then is_server is set to True
is_server = result.result['which'] == 'positive'

if is_server:
  #so if is_server is true make the device discoverable and accept the next connection
  droid.bluetoothMakeDiscoverable()
  droid.bluetoothAccept()
else:
  #attempts to connect to a device over bluetooth, the logic being that if the phone
  #is not receiving a connection then the user is attempting to connect to something
  droid.bluetoothConnect()


if is_server:
  result = droid.getInput('Chat', 'Enter a message').result #Gets a message to send 
  #via bluetooth
  if result is None:
    droid.exit() #exit if nothing is in the message
  droid.bluetoothWrite(result + '\n') #otherwise write the message

while True: #receives a message
  message = droid.bluetoothReadLine().result
  droid.dialogCreateAlert('Chat Received', message)
  droid.dialogSetPositiveButtonText('Ok')
  droid.dialogShow()
  droid.dialogGetResponse()
  result = droid.getInput('Chat', 'Enter a message').result
  if result is None:
    break
  droid.bluetoothWrite(result + '\n')

droid.exit()


Finally, for a full list of bluetooth commands, check out http://code.google.com/p/android-scripting/wiki/ApiReference and scroll down to the bluetooth facade. Best of luck!

于 2012-08-22T01:36:29.610 回答