2014-09-12 21 views
12

Tôi tìm kiếm cách phát hiện chuyển động của điện thoại bất kể người dùng cầm điện thoại như thế nào.Phát hiện chuyển động bất kể xoay thiết bị

Một số ví dụ:

  • Tôi quan tâm trong chuyển động thẳng đứng (như người dùng kéo điện thoại lên) 'phớt lờ' nếu điện thoại đặt trên bàn hoặc tổ chức trong tay (có thể lộn ngược) .
  • Cũng quan tâm đến chuyển động ngang (như người dùng đẩy điện thoại ra khỏi cơ thể) cũng 'bỏ qua' cách người dùng cầm điện thoại.

Nền là tôi muốn nhận ra nếu người dùng kéo điện thoại ra khỏi túi (như kéo 30-40cm lên và cũng có chiều ngang một số cm).

Tôi nghĩ rằng tôi phải có sự kết hợp giữa tính năng người dùng và thái độ của người dùng. Nhưng tôi không tìm được toán chính xác ..

+0

Bạn có muốn phát hiện chuyển động lắc không? – Vidhi

+1

Không. Tôi muốn phát hiện các chuyển động trong 'không gian' như kéo điện thoại lên một vài cm hoặc ở phía trước, bất kể người dùng cầm điện thoại như thế nào. – Thorsten

+0

"Tôi nghĩ rằng tôi phải có được một sự kết hợp của userAcceleration và thái độ.Nhưng tôi đã không tìm thấy những toán học chính xác .." Bạn có thể làm rõ tuyên bố này? (ví dụ: cho chúng tôi thấy những gì bạn đã thử) –

Trả lời

0

Bạn có thể thực hiện việc này nếu ứng dụng của bạn ở nền trước. Bạn có thể phát hiện cảnh quan nào điện thoại nghĩ rằng nó đang ở trong đó bằng cách sử dụng UIDeviceOrientationLandscapeLeftUIDeviceOrientationLandscapeRightUIDeviceOrientationPortraitUpsideDown/UIDeviceOrientationPortrait và từ đó điều chỉnh cách bạn đang tính toán chuyển động.

Nó có thể sẽ thay đổi khi điện thoại được chọn. Thay đổi đó, với gia tốc kế có thể cho bạn hình ảnh về cách điện thoại đang di chuyển. Điều này sẽ đòi hỏi một tấn thử nghiệm mặc dù. Tôi sẽ thiết lập ứng dụng thực hành của bạn và nhận được một lượng lớn dữ liệu về thay đổi hướng màn hình và cách gia tốc hoạt động với từng thay đổi và tìm kiếm xu hướng.

1

Không chắc chắn ý của bạn là "toán học đúng". Nhưng tôi sẽ đọc ra gia tốc và tổng hợp giá trị tuyệt đối cho cả 3 hướng (x/y/z). Điều này sẽ cung cấp cho bạn một số duy nhất để tăng tốc, độc lập với hướng của điện thoại hoặc hướng di chuyển.

Thậm chí tốt hơn là tính toán gia tốc RMS, tức là tổng các bình phương tăng tốc x/y/z và tính căn bậc hai của tổng.

Hạn chế rõ ràng của phương pháp này là nó cho bạn không có thông tin về hướng chuyển động. Bạn có thể thêm một số ngưỡng hoặc lọc để phân biệt một chuyển động tuyến tính đơn lẻ khỏi lắc (ví dụ: bằng cách đo thời gian giữa hai sự kiện tăng tốc). Ngoài ra, bạn có thể xác định sự thay đổi độ cao (điều này độc lập với hướng điện thoại) mặc dù tôi nghi ngờ liệu sự khác biệt là 30 ... 40 cm có thể được đo chính xác đủ hay không.

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