2017-02-15 20 views
7

Tôi đang làm việc trên ứng dụng theo dõi vị trí theo thời gian thực và cập nhật vị trí hiện tại lên máy chủ thông qua sử dụng dịch vụ nền trước.

Bây giờ tôi có thể giữ cho ứng dụng hoạt động trong khi thiết bị ở chế độ ngủ sâu. Nhưng do truy cập mạng bị treo trên chế độ Doze, tôi không thể cập nhật nó trên máy chủ.
Theo đề xuất hướng dẫn dành cho nhà phát triển của Google, chúng tôi có thể giải quyết vấn đề này bằng cách sử dụng thông báo FCM ưu tiên cao. Nhưng trong trường hợp của tôi làm thế nào để thông báo cho máy chủ để thông báo đẩy trong khi truy cập mạng bị đình chỉ (cần phải xác định truy cập internet vô hiệu hóa hoặc bằng hệ điều hành hoặc bằng tay).Cách liên tục hoạt động Internet trên chế độ ngủ gật Marshmallow và Nougat

+0

Bạn có tìm thấy giải pháp nào không? – nAkhmedov

+0

Chưa, nhưng tôi vẫn đang tìm kiếm giải pháp thay thế phù hợp. –

+0

Nếu bạn tìm thấy, hãy làm cho tôi tỉnh táo. Cảm ơn trước – nAkhmedov

Trả lời

0

Hãy thử để kiểm tra tình trạng NetworkInfo

public static boolean isNetBlocked(Context context) { 
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = cm.getActiveNetworkInfo(); 

    return networkInfo != null && networkInfo.getDetailedState().name().equals(NetworkInfo.DetailedState.BLOCKED.name()); 
} 
+0

Nó trả về 'Bị chặn 'khi thiết bị _Battery trên chế độ saver_ và _Restrict data_ – nAkhmedov

+0

khi internet bị vô hiệu hóa bởi hệ điều hành hoặc theo cách thủ công, trong cả hai điều kiện" networkInfo "trả về null. –

0

Một cách là đăng ký cho action-

"android.os.action.DEVICE_IDLE_MODE_CHANGED" 

này sẽ phát sóng một khi chế độ thiết bị sẽ thay đổi và sau đó tìm ra thiết bị đang ở doze/phi doze sử dụng:

PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); 

boolean isDeviceIdle = pm.isDeviceIdleMode(); 
Các vấn đề liên quan