[英]Android - How to enable Bluetooth to be always on?
Android上藍牙開發的兩個問題:
有沒有辦法在Android中始終啟用藍牙(我的應用程序可能有一個很長的設備發現階段)? 據我所知,默認值是120s的倒計時。
是否存在任何開源藍牙API實現?
如果您唯一關心的是長發現延遲(“電池壽命” - ),則啟用藍牙始終開啟可能不是一個好的決定。
至於第三方藍牙API,我唯一聽說過的是iAnywhere Blue SDK (來自Sybase,不是免費的,只有評估版可用),它涵蓋了將來支持的一些功能。 系統/藍牙和bluez包。
根據Android的藍牙路線圖 ,大部分長期等待的東西,如Java API,藍牙2.1 + EDR將在未來的某個時刻實施。
祝你的項目好運。
在2.3.6我可以通過延遲0來保持設備始終可見:
Intent di = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
di.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
Linux上的Bluez堆棧是一個開源實現。 它也可以在Windows上使用,但在Linux上API更加完整。
當你說“啟用藍牙永遠在線”你的意思是,總是試圖發現其他設備?
大多數藍牙芯片都具有深度睡眠模式,其中芯片大多數都處於關閉狀態,只需要檢查任何已建立鏈路上的活動。 只有當您希望它執行某些操作(發現,建立連接)或現有鏈接上有活動時,它才會喚醒全功率。
是的,它比藍牙完全關閉使用更多的電池電量,但它不是一個完整的吸血鬼。
private void ensureDiscoverable() {
if(D) Log.d(TAG, "ensure discoverable");
if (mBluetoothAdapter.getScanMode() !=
BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(discoverableIntent);
}
BlueCove是Java的開源藍牙實現。
它可以在很多不同的機器上運行,如果正確的話,有一個Android兼容的版本潛伏在某個地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.