2012-10-22 120 views
2

我想用带有SPP(RFCOMM)的外部蓝牙设备控制我的手机。 所以我采取了BluetoothChat-Example并采用了读取部分来处理由外部设备发送的我的命令。 当我使用外部设备时,它启动,建立连接,发送命令并再次关闭。该应用在后台运行时也可以工作。所以一切正常,到目前为止..Android:蓝牙(聊天)应用程序应始终保持在后台可用

两个问题,我仍然有【

一),如果我关断和蓝牙在手机上,它将不再听从外部设备传入连接。我必须再次启动应用程序才能使其正常工作。

b)关闭应用程序也可以,但仍然有效。但是当我杀死所有进程时,该应用程序也关闭,不会再工作。有没有可能,自动重新启动应用程序?

谢谢!

PS:我是一名Android初学者。

回答

0

没有和蓝牙的工作,但是我想我可以给你一些指针与我的Android

一)的经验,我想你已经实现了服务的蓝牙连接,对不对?如果是这样,您可以为ACTION_CONNECTION_STATE_CHANGED事件实现广播接收器。收到此广播时,您可以处理蓝牙设备连接和断开连接。

http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#ACTION_CONNECTION_STATE_CHANGED

B)我真的不知道,如果你能做到这一点。如果您使用系统AlarmManager编程闹钟来重新打开您的应用程序,并且操作系统杀死您的进程,闹钟也将被终止。

希望它有帮助。

+0

tnx andres, a)我还没有实施服务。我会看看广播接收机,这听起来很有趣! b)我看到应用程序正在执行此操作。例如widgetlocker。它在被杀后自动启动。 – hewald

+0

嗨hewald。我认为你可以通过实现在另一个进程(android:process)中运行的服务来实现这种行为,并定期检查你的核心服务是否存在。 – Andres

+0

我同意你的意见。第一次尝试将程序更改为服务导致程序崩溃,但这将是我的下一个挑战,使其工作... – hewald

0

我设法运行服务,它工作正常! 我还为boot_complete事件添加了broadcastreceiver - 也可以。

直到现在还没有解决的唯一问题是,当我杀死所有进程时,我的服务和接收器停止工作! 有没有办法让他们活着或自动重新启动? 谢谢!