tôi đã viết một bộ tiếp nhận để phát hiện chuyển động điện thoại được thay đổi hay không như thế này trong manifest.xmlLàm thế nào tôi sẽ phát hiện cảm biến chuyển động trong bộ thu phát sóng?
<receiver android:name="com.hanuman.sensor.receiver.SensorReceiver" >
<intent-filter
android:enabled="true"
android:exported="false" >
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
và bên nhận onReceive() phương pháp mã là:
String action = intent.getAction();
if (action.equals(Intent.ACTION_USER_PRESENT)) {
System.out.println("User is present");
Intent s = new Intent(context, MainActivity.class);
s.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(s);
} else {
System.out.println("User is not present");
}
cuối cùng câu hỏi của tôi là, không phát hiện cảm biến khi nó được chuyển động, nó phát hiện khi thiết bị của chúng tôi mở khóa sau đó nó đang gọi MainActivity của tôi, nhưng tôi muốn phát hiện khi thiết bị của tôi chuyển động được thay đổi sau đó tôi muốn phát hiện trong máy thu. Làm thế nào tôi có thể làm điều đó?.
là CPU của bạn thức hay ngủ? Mặc dù bạn đang nhận được phát sóng của bạn, nhưng bạn không thể xác định chuyển động, để làm như vậy bạn cần phải thức dậy CPU của bạn nếu nó đi vào chế độ ngủ. Để bắt đầu với [kiểm tra điều này] (https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html) – Skynet
nếu nó đang ở chế độ ngủ thì chuyển động thiết bị của tôi không được phát hiện? – Hanuman
Nếu thiết bị của bạn đang ở chế độ ngủ - thật đáng buồn là, hãy đánh thức thiết bị của bạn sử dụng một phần wakelock. Nhưng hãy đảm bảo phát hành tài nguyên khi bạn đã hoàn tất các hoạt động của mình. Đó là pin quan trọng. – Skynet