2011-10-06 45 views
50

Tôi muốn kiểm tra xem bluetooth có được bật trên bất kỳ thiết bị Android nào định kỳ không. Có bất kỳ ý định nào mà tôi có thể bắt bằng BroadcastReceiver để làm như vậy hay không hoặc có cách nào khác để làm điều đó không?Làm cách nào để kiểm tra xem bluetooth có được bật theo chương trình không?

+0

Chỉ cần kiểm tra này [link] (http://developer.android.com/guide/topics/wireless/bluetooth.html#SettingUp) cho Bluetooth và làm theo tất cả các bậc thang. Tôi hy vọng điều này giúp đỡ. – Uttam

Trả lời

124

Có bạn đi:

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
if (mBluetoothAdapter == null) { 
    // Device does not support Bluetooth 
} else { 
    if (!mBluetoothAdapter.isEnabled()) { 
     // Bluetooth is not enable :) 
    } 
} 

Với uses-permission

<uses-permission android:name="android.permission.BLUETOOTH" android:required="false" /> 
+0

Cảm ơn câu trả lời ngắn và nhanh chóng! – androidnoob

+7

Nếu sự cho phép bluetooth chỉ cần thiết cho phát hiện này, đừng quên đặt nó KHÔNG bắt buộc: Murphy

+0

cách tối ưu http: //stackoverflow.com/a/21010026/2624806 :) – CoDe

6

Ở đây tôi có thay thế khác như một câu trả lời cho câu hỏi này.

Thêm dòng sau vào tệp kê khai của bạn.

<uses-feature android:name="android.hardware.BLUETOOTH" android:required="false"/> 

Bây giờ, nơi bạn muốn kiểm tra khả năng hỗ trợ Bluetooth, hãy sử dụng mã sau.

boolean isBluetoothSupported = getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH); 
+0

nó khác với "BluetoothAdapter.getDefaultAdapter()" như thế nào? – CoDe

+1

Tôi nghĩ android: yêu cầu phải là sai. Bởi vì nó sẽ chỉ làm việc trên những người hỗ trợ bluetooth. –

+1

Đó là lỗi đánh máy cho tôi khóc. Tôi phải sửa nó. – rekire

2

sử dụng có thể sử dụng

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

để kiểm tra BT kết nối

mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_CONNECTED 

để kiểm tra BT bị ngắt kết nối

mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_DISCONNECTED 
+0

Câu hỏi không phải là về kiểm tra kết nối tai nghe hay không, nhưng tôi đang tìm chính xác điều này, vì vậy +1 và cảm ơn :) – Alexandr

2

Để kiểm tra trạng thái Bluetooth, ON hoặc OFF, cách lập trình:

BluetoothAdapter btAdapter = ((Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR1) 
      ?((BluetoothManager)mContext.getSystemService(Context.BLUETOOTH_SERVICE)).getAdapter() 
       :(BluetoothAdapter.getDefaultAdapter())); 

     if(btAdapter==null){ 
     return; 
     } 
     if(btAdapter.getState()==BluetoothAdapter.STATE_ON){ 
      //Bluetooth is ON 
     } 

Bạn cũng có thể lắng nghe những hành động Ý định:

BluetoothAdapter.ACTION_STATE_CHANGED

1

Đây là cách tôi đã làm nó với sự giúp đỡ của câu trả lời @ xjaphx của, phiên bản hơi đơn giản:

private boolean getBlueToothOn(){ 
    BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); 
     return btAdapter != null && btAdapter.isEnabled(); 
    } 

<uses-permission android:name="android.permission.BLUETOOTH" /> 
4
public boolean isBluetoothEnabled() 
    { 
     BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
     return mBluetoothAdapter.isEnabled(); 

    } 

với sự cho phép trong file manifest:

<uses-permission android:name="android.permission.BLUETOOTH" /> 
Các vấn đề liên quan