2014-03-27 56 views
0

我一直在遇到一個問題,那就是我的產品有一個根植平板(iball 3G 7271,運行於4.1.2),它試圖通信每個我的項目需求的RN42藍牙module.As的Android應用程序,從而啓動了BT連接到RN42必須具備的能力:Android - 如何關閉被殺程序打開的藍牙插座/端口

  1. 進行遠程更新
  2. 如果如果自己重新啓動的情況下,crashes.Both這些功能 已被編碼,並發現工作。

但是,正如您所知,在這兩種情況下,藍牙連接都會中斷並丟失,並且必須在平板電腦和RN42之間重新建立連接。

我面臨的問題是,當通過藍牙連接到RN42的應用(根據情況1或情況2更新/重新啓動)使藍牙插座/端口處於連接/打開狀態時,同時新應用程序將分別重新安裝/重新啓動。因此,在重新安裝/重新啓動的應用程序中,當它啓動與RN42的藍牙連接時,設備操作系統會爲其分配一個新的藍牙插座/端口(而不是舊的,因爲它仍然被佔用)。但是在幾次重新安裝/重新啓動(準確地說是20次)之後,設備耗盡了它可以分配給應用程序的任何可用套接字端口,並且我得到了重複的異常,指出'未創建連接(失敗或中止)'

有沒有一種方法可以關閉在重新安裝/重新啓動之前應用程序保持打開的藍牙插口/端口?

回答

0

我對不同的BT芯片組(主要是低成本平板電腦)存在這樣的問題,並且通過.enable()或.disabled()打開/關閉藍牙適配器完成了這項工作。

注意這是一個壞主意,壞的做法,但在我的實體模型的範圍是有用的調試:)

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();   
mBluetoothAdapter.disable(); 
while(mBluetoothAdapter.isEnabled()); 
mBluetoothAdapter.enable(); 
while(!mBluetoothAdapter.isEnabled());