2012-04-02 102 views
2

我正在開發博客演講者應用程序。檢測iOS5上禁用藍牙功能

我想暫停音頻時禁用藍牙,如iPod應用程序。我認爲在閱讀本文後不使用私有API是不可能的。 Check if Bluetooth is Enabled?

但是,我的客戶告訴我,Rhapsody和DI Radio應用程序都支持它。

然後我發現iOS5有Core藍牙框架。 https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/CoreBluetooth_Framework/CoreBluetooth_Framework.pdf

CBCentralManagerStatePoweredOff狀態看起來像是一個。

但是,說明中說這個api只支持藍牙4.0低功耗設備。 有沒有人試過做同樣的事情?

我想支持目前流行的藍牙耳機,或藍牙車載方向盤。我不知道是否值得嘗試,當它只支持一些全新的藍牙。

+1

我不確定實際問題在這裏。檢查CBCentralManagerState將允許您查看設備的藍牙是打開還是關閉。 – mwright 2012-04-30 17:18:06

+0

謝謝,我會檢查出來的! – 2012-05-01 04:35:47

回答

2

對於音頻,專注於藍牙特別的聲音像錯誤的方法。我想你要找的是Handling Audio Hardware Route Changes

你會發現,所有的下列引起內置的iPod應用程序暫停:

  • 藍牙設備被移除(可能是因爲藍牙已被禁用)。
  • 耳機未插電。
  • 設備從擴展塢移除。

當您使用音頻會話API時,您會獲得所有正確的行爲。

+0

看來這是我想要的。如果我一次可以支持所有的行爲,那就太好了。謝謝。 – 2012-07-16 04:34:10

1

在BLE你會得到包含狀態管理器更新:

enum { 
CBCentralManagerStateUnknown = 0, // State unknown, 
update imminent. 
CBCentralManagerStateResetting, // The connection with the system service was  momentarily lost, 
update imminent. 
CBCentralManagerStateUnsupported, // The platform doesn't support Bluetooth Low Energy. 
CBCentralManagerStateUnauthorized, // The app is not authorized to use Bluetooth Low Energy. 
CBCentralManagerStatePoweredOff, // Bluetooth is currently powered off. 
CBCentralManagerStatePoweredOn, // Bluetooth is currently powered on and available to use. 
}; 

,你可以在強制回調檢查與如

centralManager:didUpdateState...{ 
if ([manager state] == CBCentralManagerStatePoweredOff) 
{ 
[musicPlayer pause] 
} 
} 
+0

謝謝,我會檢查出來的! – 2012-07-16 04:32:52