Android實(shí)現(xiàn)計(jì)步器功能
本文實(shí)例為大家分享了Android實(shí)現(xiàn)計(jì)步器功能的具體代碼,供大家參考,具體內(nèi)容如下
計(jì)步器的原理是通過手機(jī)的前后擺動(dòng)模擬步伐節(jié)奏檢測(cè)。我們本身在手機(jī)的傳感器中就有計(jì)步器的傳感器,所以這里我們直接上代碼。
activity_main.xml
<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='match_parent' android:layout_height='match_parent' android:orientation='vertical' > <TextView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:padding='5dp' android:text='設(shè)備檢測(cè)到您當(dāng)前走了0步,總計(jì)數(shù)為0步' android:textColor='@color/black' android:textSize='17sp' /></LinearLayout>
MainActivity.java
public class MainActivity extends BaseActivity implements SensorEventListener { private TextView tv_step; private SensorManager mSensorMgr;// 聲明一個(gè)傳感管理器對(duì)象 private int mStep; private int mStepCount; @Override protected MvcBaseModel getModelImp() { return null; } @Override protected int getContentLayoutId() { return R.layout.activity_main; } @Override protected void initWidget() { tv_step = findViewById(R.id.tv_step); // 從系統(tǒng)服務(wù)中獲取傳感管理器對(duì)象 mSensorMgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE); } @Override protected void onPause() { super.onPause(); // 注銷當(dāng)前活動(dòng)的傳感監(jiān)聽器 mSensorMgr.unregisterListener(this); } @Override protected void onResume() { super.onResume(); //注冊(cè)步行檢測(cè) mSensorMgr.registerListener(this, mSensorMgr.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR), SensorManager.SENSOR_DELAY_NORMAL); //注冊(cè)步行計(jì)數(shù) mSensorMgr.registerListener(this, mSensorMgr.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR), SensorManager.SENSOR_DELAY_NORMAL); } @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_STEP_DETECTOR){//步行檢測(cè)事件 if (event.values[0] == 1.0f){ mStep++; } }else if (event.sensor.getType() == Sensor.TYPE_STEP_COUNTER){//計(jì)步器事件 mStepCount = (int) event.values[0]; } String desc = String.format('設(shè)備檢測(cè)到您當(dāng)前走了%d步,總計(jì)數(shù)為%d步',mStep,mStepCount); tv_step.setText(desc); } //當(dāng)傳感器精度改變時(shí)回調(diào)該方法,一般無需處理 public void onAccuracyChanged(Sensor sensor, int accuracy) {}}
這樣我們就實(shí)現(xiàn)了計(jì)步器的功能。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. javascript xml xsl取值及數(shù)據(jù)修改第1/2頁2. python opencv 實(shí)現(xiàn)讀取、顯示、寫入圖像的方法3. JavaScript Tab菜單實(shí)現(xiàn)過程解析4. jsp+mysql實(shí)現(xiàn)網(wǎng)頁的分頁查詢5. ASP.NET MVC通過勾選checkbox更改select的內(nèi)容6. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼7. 使用AJAX(包含正則表達(dá)式)驗(yàn)證用戶登錄的步驟8. Python使用oslo.vmware管理ESXI虛擬機(jī)的示例參考9. Android實(shí)現(xiàn)圖片自動(dòng)切換功能(實(shí)例代碼詳解)10. ThinkPHP5 通過ajax插入圖片并實(shí)時(shí)顯示(完整代碼)
