2015-10-20 14 views
6

Tôi đang xem xét sử dụng API lân cận của Google để phát hiện đèn hiệu (Eddystone). Cách tiếp cận hiện tại duy nhất tại thời điểm này dường như đang gọi Nearby.Messages.subscribe() như được mô tả here.API lân cận, cách quét chính xác cho đèn hiệu trong nền là gì?

Vấn đề là điều này dường như không phù hợp để quét liên tục trong nền. Ứng dụng của tôi cần phải theo dõi các cảnh báo ở chế độ nền để có thể nhìn thấy cảnh báo, nó sẽ thực hiện cuộc gọi đến API REST. Về cơ bản, tôi cần một cái gì đó tương tự như các tính năng beacon monitorning được cung cấp bởi các ước tính SDK.

Điều này có thể đạt được với API lân cận mà không làm hao pin không?

Trả lời

0

Dường như cách duy nhất để thực hiện những gì bạn muốn là quét liên tục hoặc sử dụng vị trí thiết bị và đèn hiệu để kích hoạt quét khi chúng ở gần. Dù bằng cách nào, có cống pin liên quan khi bạn đang quét hoặc chia sẻ vị trí. Dường như đèn hiệu Estimote sử dụng phương pháp tiếp cận vị trí, đây có lẽ là cách tiếp cận tốt hơn về tiết kiệm pin.

2

Tôi nhận thấy câu hỏi này là về cách sử dụng API lân cận, nhưng tôi không biết cách nào để sử dụng API đó để đáp ứng yêu cầu của bạn.

Nếu bạn mở để lựa chọn thay thế, mã nguồn mở và miễn phí Android Beacon Library có hỗ trợ đầy đủ cho các đèn hiệu Eddystone. API của nó được mô hình hóa sau API API theo dõi/giám sát khác nhau, vì vậy nó sẽ thực hiện chính xác những gì bạn muốn.

See here để biết cách sử dụng thư viện này để theo dõi các cảnh báo Eddystone.

0

Bạn cũng có thể đăng ký ở chế độ nền để nhận Intent thay vì thông báo MessageListener. Quét nền là chức năng quét nguồn thấp vì vậy độ trễ có thể rất dài (thậm chí vài phút để phát hiện đèn hiệu). Quét được thực hiện trên sự kiện trên màn hình hoặc khi ứng dụng khác yêu cầu. Vì vậy, bạn nhận được kết quả từ các ứng dụng quét khác.

Bạn có thể tạo GoogleApiClient bằng ngữ cảnh ứng dụng thay vì ngữ cảnh hoạt động. Gọi đây là tức là từ một máy thu phát sóng phản ứng với chương trình phát sóng BOOT_COMPLETED.

GoogleApiClient client = new GoogleApiClient.Builder(appContext) 
    .addApi(Nearby.MESSAGES_API, new MessagesOptions.Builder() 
     .setPermissions(NearbyPermissions.BLE) 
     .build()) 
    .build(); 
client.connect(); 

Khi khách hàng được kết nối (các onConnected phương pháp ConnectionCallbacks), bạn có thể sử dụng subscribe PendingIntent và tạo Broadcast receiver xử lý mục đích.

Trong bộ thu phát, bạn có thể xử lý ý định bằng phương thức Nearby.Messages.handleIntent đang sử dụng cùng một MessageListener làm tính năng quét trước.

Một trong những vấn đề với phương pháp này là quyền truy cập Lân cận. Để cho phép người dùng phê duyệt quyền truy cập vào Lân cận, bạn cần có giao diện người dùng. Giải pháp của tôi là đợi với chức năng quét nền cho đến khi người dùng lần đầu tiên mở ứng dụng và chấp nhận các quyền. Sau khi được chấp nhận, bạn có thể đăng ký ở chế độ nền.

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