Android實(shí)現(xiàn)計(jì)步器功能
本文實(shí)例為大家分享了Android實(shí)現(xiàn)計(jì)步器功能的具體代碼,供大家參考,具體內(nèi)容如下
計(jì)步器的原理是通過(guò)手機(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)聽(tīng)器 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)該方法,一般無(wú)需處理 public void onAccuracyChanged(Sensor sensor, int accuracy) {}}
這樣我們就實(shí)現(xiàn)了計(jì)步器的功能。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 用xslt+css讓RSS顯示的跟網(wǎng)頁(yè)一樣漂亮2. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁(yè)的方法3. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫(huà)特效4. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼5. 讀大數(shù)據(jù)量的XML文件的讀取問(wèn)題6. 利用CSS制作3D動(dòng)畫(huà)7. HTML5 Canvas繪制圖形從入門(mén)到精通8. html5手機(jī)觸屏touch事件介紹9. 讓chatgpt將html中的圖片轉(zhuǎn)為base64方法示例10. 《CSS3實(shí)戰(zhàn)》筆記--漸變?cè)O(shè)計(jì)(一)
