兩個問題上的Android藍牙開發:Android - 如何啓用藍牙始終打開?
有沒有一種方法,使藍牙是始終打開(我可能在我的應用程序很長的設備發現相)的Android?據我所見,默認值是從120s開始倒數。
它是否存在任何開源藍牙API實現?
兩個問題上的Android藍牙開發:Android - 如何啓用藍牙始終打開?
有沒有一種方法,使藍牙是始終打開(我可能在我的應用程序很長的設備發現相)的Android?據我所見,默認值是從120s開始倒數。
它是否存在任何開源藍牙API實現?
如果您唯一擔心的是長時間的發現延遲(「電池壽命」),則啓用藍牙始終打開,可能不是一個好決定。
至於第三方藍牙API,我聽說的唯一的東西是iAnywhere Blue SDK(來自Sybase,不是免費的,只有評估版本可用),涵蓋了將來會支持的一些功能來自系統/藍牙和bluez包。
根據Android的Bluetooth roadmap,大多數等待Java API,藍牙2.1 + EDR的東西都將在未來的某個時間實現。
祝您的項目順利。
感謝您的電池的建議,但在這個階段的項目,我做不關心電池,只關於恆定的藍牙:) – 2009-09-14 15:04:22
Linux上的Bluez堆棧是一個開源實現。它也可以在Windows上使用,但是在Linux上API更加完整。
當你說,'啓用藍牙始終打開'你的意思是,總是試圖發現其他設備?
大多數藍牙芯片都有深度睡眠模式,其中芯片大部分都處於關閉狀態,只是出現了一個檢查任何已建立鏈路上的活動。只有當你想要做某件事(發現,建立連接)或現有鏈接上有活動時,它纔會醒來。
是的,它使用更多的電池電力,如果藍牙完全關閉,但它不是一個完整的吸血鬼。
是的,永遠在我的意思是不斷的客戶端發現。 android的「問題」是默認的120s倒計時。這是可變的嗎?可以說600s? – 2009-09-16 10:32:46
BlueCove是一個用於Java的開源藍牙實現。
它適用於很多不同的機器,如果正確的話有一個潛伏在某處的Android兼容版本。
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);
}
這是並不總是(或發現與原始提問者meants),這提示用戶確認。 – Tiago 2012-01-05 12:52:44
我們永遠不能使設備在Android的總是可見的,但我們可以從120秒延長其時間300秒。 – 2012-01-05 13:39:39
在2.3.6我可以保證設備始終可見通過將延遲0:
Intent di = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
di.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
是的,我也看到了這個消息。最後,可用:) – 2009-10-30 10:22:26
藍牙是在SDK中可用,但AVD不支持2.0 API(5級)或文檔不達標最新:http://developer.android.com/guide/developing/工具/ avd.html – 2009-10-30 13:51:08
概覽鏈接可能是一個更好的起點比其他兩個環節: http://developer.android.com/intl/zh-CN/guide/topics/wireless/bluetooth.html – RickNotFred 2010-05-12 19:21:41