日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android手机计步器开发,超精准的Android手机计步器开发

發布時間:2023/12/20 Android 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android手机计步器开发,超精准的Android手机计步器开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

親測在小米.魅族.華為上可用,該app采用后臺service計歩服務,所以只要app不被手機殺死在后臺也是可以正常計歩的。上圖:

1.需要在AndroidManifest.xml中添加權限

android:name="android.hardware.sensor.stepcounter"

android:required="true" />

android:name="android.hardware.sensor.stepdetector"

android:required="true" />

2.檢測手機是否支持計歩

/**

* 判斷該設備是否支持計歩

*

* @param context

* @return

*/

@TargetApi(Build.VERSION_CODES.KITKAT)

public static boolean isSupportStepCountSensor(Context context) {

// 獲取傳感器管理器的實例

SensorManager sensorManager = (SensorManager) context

.getSystemService(context.SENSOR_SERVICE);

Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);

Sensor detectorSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);

return countSensor != null || detectorSensor != null;

}

3.功能使用

private boolean isBind = false;

private Messenger mGetReplyMessenger = new Messenger(new Handler(this));

private Messenger messenger;

/**

* 開啟計步服務

*/

private void setupService() {

Intent intent = new Intent(this, StepService.class);

isBind = bindService(intent, conn, Context.BIND_AUTO_CREATE);

startService(intent);

}

/**

* 從service服務中拿到步數

*

* @param msg

* @return

*/

@Override

public boolean handleMessage(Message msg) {

switch (msg.what) {

case Constant.MSG_FROM_SERVER:

cc.setCurrentCount(10000, msg.getData().getInt("step"));

break;

}

return false;

}

/**

* 用于查詢應用服務(application Service)的狀態的一種interface

* 更詳細的信息可以參考Service 和 context.bindService()中的描述

* 和許多來自系統的回調方式一樣,ServiceConnection的方法都是進程的主線程中調用的

*/

ServiceConnection conn = new ServiceConnection() {

/**

* 在建立起于Service的連接時會調用該方法,目前Android是通過IBind機制實現與服務的連接。

* @param name 實際所連接到的Service組件名稱

* @param service 服務的通信信道的IBind,可以通過Service訪問對應服務

*/

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

try {

messenger = new Messenger(service);

Message msg = Message.obtain(null, Constant.MSG_FROM_CLIENT);

msg.replyTo = mGetReplyMessenger;

messenger.send(msg);

} catch (RemoteException e) {

e.printStackTrace();

}

}

/**

* 當與Service之間的連接丟失的時候會調用該方

* 這種情況經常發生在Service所在的進程崩潰或者被Kill的時候調用

* 此方法不會移除與Service的連接,當服務重新啟動的時候仍然會調用 onServiceConnected()

* @param name 丟失連接的組件名稱

*/

@Override

public void onServiceDisconnected(ComponentName name) {

}

};

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持找一找教程網。

總結

以上是生活随笔為你收集整理的android手机计步器开发,超精准的Android手机计步器开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。