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ì)步器的功能。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 如何利用python操作注冊(cè)表2. Xml簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理3. jsp文件下載功能實(shí)現(xiàn)代碼4. 詳解瀏覽器的緩存機(jī)制5. ASP動(dòng)態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗(yàn)分享6. jsp實(shí)現(xiàn)登錄驗(yàn)證的過濾器7. phpstudy apache開啟ssi使用詳解8. vue3+ts+elementPLus實(shí)現(xiàn)v-preview指令9. 如何在jsp界面中插入圖片10. JSP之表單提交get和post的區(qū)別詳解及實(shí)例
