Android超精准计步器开发-Dylan计步
来源:互联网 发布:美国反智主义 知乎 编辑:程序博客网 时间:2024/05/17 15:02
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/52868803
本文出自【DylanAndroid的博客】
Android超精准计步器开发
亲测在小米.魅族.华为上可用,该app采用后台service计歩服务,所以只要app不被手机杀死在后台也是可以正常计歩的。上图:
1.需要在AndroidManifest.xml中添加权限
<!--计歩需要的权限--> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-feature android:name="android.hardware.sensor.accelerometer" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-feature android:name="android.hardware.sensor.stepcounter" android:required="true" /> <uses-feature 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) { } };
GitHub地址
10 1
- Android超精准计步器开发-Dylan计步
- Android超精准计步器开发-Dylan计步(申明:来源于网路)
- 【Android自定义View实战】之仿QQ运动步数圆弧及动画,Dylan计步中的控件StepArcView
- Android-传感器-计步
- Android计步
- android中的计步问题及计步传感器分析
- Android 计步功能-简单实现
- Android 计步传感器的实现
- Android 计步功能-简单实现
- Android计步模块优化(今日步数)
- Android精准计步器
- 通过Google内置计步器和加速度传感器制作android计步程序(附源码)
- Eclipse+超快的模拟器Genymotion开发Android应用(第二步:集成Genymotion和eclipse)
- Android开发_精准排布控件位置
- Android基于G-Sensor的计步算法
- Android BLE4.0通信之计步、体重、血压
- Android计步模块(类似微信运动)
- Android 模仿华为健康自定义 计步View
- [LeetCode]422. Valid Word Square
- XSS攻击及防御
- 输入圆的半径,输出圆的周长
- jxl.jar ---EXCEL操作工具包
- Matlab中图片保存的四种方法
- Android超精准计步器开发-Dylan计步
- SEAndroid策略
- 分数求和
- Curse的颜色使用
- 将方形图片转换成为圆形图片的工具类
- Codeforces Round #376 (Div. 2) B. Coupons and Discounts
- 第八周:C语言:小球自由下落
- bzoj 2445 最大团 CRT 组合数取模
- GCC编译器下的-L与-l的区别