Tôi không nhất thiết phải đồng ý với phản hồi của Alex. Điều này là có thể (mặc dù có thể không chính xác như bạn muốn) bằng cách sử dụng gia tốc, xoay thiết bị và ALOT của thử nghiệm/lỗi và khai thác dữ liệu.
Cách tôi thấy rằng điều này có thể hoạt động là xác định một cách cụ thể mà người dùng giữ thiết bị (hoặc thiết bị bị khóa và định vị trên cơ thể người dùng). Khi họ đi qua các chuyển động, định hướng kết hợp với gia tốc và thời gian sẽ xác định loại chuyển động nào đang được thực hiện.Bạn sẽ cần sử dụng các đối tượng lớp như OrientationEventListener, SensorEventListener, SensorManager, Sensor và các bộ hẹn giờ khác nhau, ví dụ: Runnables hoặc TimerTasks.
Từ đó, bạn cần thu thập nhiều dữ liệu. Quan sát, ghi lại và nghiên cứu những con số để thực hiện các hành động cụ thể, và sau đó đưa ra một loạt các giá trị xác định từng chuyển động và chuyển động phụ. Những gì tôi có nghĩa là theo tiểu phong trào được, có thể một situp có năm phần:
1) vị trí nghỉ ngơi nơi định hướng điện thoại là x có giá trị vào thời điểm x
2) Situp bắt đầu nơi định hướng điện thoại là hàng loạt các y- giá trị lúc y (lớn hơn x)
3) Situp là ở vị trí cuối cùng, nơi định hướng điện thoại là phạm vi của z-giá trị vào thời điểm z (lớn hơn y)
4) Situp là trong phục hồi (người dùng đang rơi xuống sàn), nơi định hướng điện thoại có phạm vi giá trị y tại thời điểm v (lớn hơn z)
5) Situp trở lại ở vị trí còn lại khi định hướng điện thoại là giá trị x tại thời điểm n (thời gian lớn nhất và cuối cùng)
Thêm gia tốc cho điều này, vì có trường hợp tăng tốc. Ví dụ, giả thuyết của tôi là mọi người thực hiện situp thực tế (các bước 1-3 trong sự cố trên của tôi) với khả năng tăng tốc nhanh hơn khi họ quay trở lại. Nói chung, hầu hết mọi người rơi chậm hơn vì họ không thể nhìn thấy những gì đằng sau họ. Điều đó cũng có thể được sử dụng như một điều kiện bổ sung để xác định hướng của người dùng. Điều này có lẽ không đúng đối với tất cả các trường hợp, tuy nhiên, đó là lý do tại sao khai thác dữ liệu của bạn là cần thiết. Bởi vì tôi cũng có thể đưa ra giả thuyết rằng nếu ai đó đã thực hiện nhiều situps, thì situp cuối cùng sẽ rất chậm và sau đó họ sẽ trở lại vị trí còn lại do kiệt sức. Trong trường hợp này, gia tốc sẽ ngược lại với giả thiết ban đầu của tôi.
Cuối cùng, hãy kiểm tra chuyển động Cảm biến: http://developer.android.com/guide/topics/sensors/sensors_motion.html
Tất cả trong tất cả, nó thực sự là một trò chơi số kết hợp với "guestimation" của riêng bạn. Nhưng bạn có thể ngạc nhiên về hiệu quả hoạt động của nó. Có lẽ (hy vọng) đủ tốt cho mục đích của bạn.
Chúc may mắn!
@ NSQuamber.java –