簡體   English   中英

Android - 如何讓藍牙始終開啟?

[英]Android - How to enable Bluetooth to be always on?

Android上藍牙開發的兩個問題:

  1. 有沒有辦法在Android中始終啟用藍牙(我的應用程序可能有一個很長的設備發現階段)? 據我所知,默認值是120s的倒計時。

  2. 是否存在任何開源藍牙API實現?

Android 2.0 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);
    }

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

BlueCove是Java的開源藍牙實現。

它可以在很多不同的機器上運行,如果正確的話,有一個Android兼容的版本潛伏在某個地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM