2013-04-08 32 views
30

Tôi nhận được getBluetoothService() called with no BluetoothManagerCallback là lỗi thường xuyên trong ứng dụng Android của mình.getbluetoothservice() được gọi là không có bluetoothmanagercallback

Tôi không biết điều gì gây ra điều này hoặc bất kỳ điều gì về cuộc gọi lại của người quản lý bluetooth. Bất cứ ai có thể cho tôi một ý tưởng tốt về những gì có thể gây ra vấn đề này hoặc nơi để bắt đầu tìm kiếm.

+0

kiểm tra điều này: http://stackoverflow.com/questions/17304479/android-getbluetoothservice-called-with-no-bluetoothmanagercallback – user2723096

+0

Lưu ý rằng đó là một thông điệp đặc biệt ngu ngốc. Phần mềm nên biết liệu ổ cắm có bị đóng hay đã hết thời gian chờ đọc hay không, và hai điều kiện không tương tự như từ xa. Tôi nghi ngờ 'socket được đóng' nên đọc 'kết nối đã được đóng bởi các peer'. – EJP

Trả lời

5

Dường như điều này được gọi khi nhiều ổ cắm bluetooth được mở cùng một lúc. Tôi đã sửa lỗi này bằng cách đảm bảo rằng tôi chỉ mở 1 ổ cắm tại một thời điểm.

+4

Bạn có thể làm rõ cách bạn thực hiện điều này (chỉ bằng lời nói).Tôi có một chức năng "Đóng tất cả các khe cắm mở" mà tôi gọi ngay trước khi tôi mở một ổ cắm mới. Mặc dù, điều này dường như không làm các trick. Làm thế nào bạn làm điều đó? – Brandon

2

Tôi nhận được lỗi này ngay cả sau khi ứng dụng của tôi đã bị đóng và tôi không thể loại bỏ nó theo bất kỳ cách nào có thể. Sau khi bắt đầu này xảy ra tôi cần phải khởi động lại cứng điện thoại của tôi bởi vì tôi không thể nữa để thậm chí bật Bluetooth.

Ngay bây giờ (có cùng mã) nó chỉ xảy ra trên một trong các điện thoại của tôi .. có thể đó là vấn đề của trình điều khiển.

+1

trong android 4.2 đây là vấn đề đã biết – dacopenhagen

+0

Ah ok, tnx cho thông tin :) –

+1

Ngoài ra một số điện thoại sử dụng ngăn xếp bluetooth rộng:/ – dacopenhagen

26

Bằng cách đọc mã nguồn Android, có vẻ như đó là cảnh báo bạn không thể làm gì cả. Các mã nguồn cho thấy rằng nếu bạn gọi

BluetoothSocket#connect(); 

Sau đó, nó sẽ gọi

BluetoothAdapter.getDefaultAdapter().getBluetoothService(null); 

Mấu chốt ở đây, là tham số rỗng mà nó đi trong dòng trên. Do đó, sẽ không có gọi lại, và sau đó lớp BluetoothSocket sẽ ném ra một cảnh báo.

Vì đó chỉ là cảnh báo, tôi không nghĩ bạn cần làm bất cứ điều gì về nó.

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/bluetooth/BluetoothSocket.java dòng 306 https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/bluetooth/BluetoothAdapter.java dòng 1610

+0

tôi gặp lỗi này không thể giải quyết phương thức getBluetoothService (null) – Makvin

+0

Bạn không nên gọi phương thức trực tiếp . Đây là gói riêng tư. Sử dụng phương thức Connect() công khai. – AndreasPK

-1

này cũng đi lên nếu BluetoothServerSocket hiện không chấp nhận [bluetoothServerSocket.accept()] với UUID cùng bạn đang cố gắng để kết nối.

Nếu bạn chắc chắn rằng bạn đang chấp nhận với socket máy chủ, hãy kiểm tra kỹ xem bạn đã không cung cấp thời gian chờ quá ngắn (trước đây tôi đã đặt nó là 200 để kiểm tra điều gì đó, rất tiếc).

0

Tôi nhận được thông báo này sau khi thử BluetoothSocket.connect() ngay sau khi nhận được BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED với trạng thái BluetoothHeadset.STATE_CONNECTED. BluetoothSocket.connect() cũng không thành công. Sau khi thêm khoảng thời gian chờ 500ms trước khi thử BluetoothSocket.connect() điều này giải quyết được vấn đề của tôi về kết nối thực sự. Thông báo "getBluetoothService() được gọi là không có BluetoothManagerCallback" vẫn còn nhưng mọi thứ hoạt động.

0

getBluetoothService() được gọi không có BluetoothManagerCallback

Tôi cũng đang gặp phải vấn đề tương tự. Nhưng tôi đã giải quyết. Trong trường hợp của tôi đã có một ổ cắm ở trạng thái mở và tôi đang cố mở một ổ cắm khác. Vì vậy, chúng tôi cố gắng mở nhiều hơn một ổ cắm tại một thời điểm với tư cách là một khách hàng. Tôi cảm thấy rằng đây là lý do

+0

để bạn giải quyết nó như thế nào? –

Các vấn đề liên quan