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

所属分类: 软件编程 / Android 阅读数: 53
收藏 0 赞 0 分享

亲测在小米.魅族.华为上可用,该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地址:https://github.com/linglongxin24/DylanStepCount

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Android网络编程之获取网络上的Json数据实例

这篇文章主要介绍了Android网络编程之获取网络上的Json数据实例,本文用完整的代码实例讲解了在Android中读取网络中Json数据的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中的windowSoftInputMode属性详解

这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下
收藏 0 赞 0 分享

Android网络编程之UDP通信模型实例

这篇文章主要介绍了Android网络编程之UDP通信模型实例,本文给出了服务端代码和客户端代码,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中使用ListView实现漂亮的表格效果

这篇文章主要介绍了Android中使用ListView实现漂亮的表格效果,本文用详细的代码实例创建了一个股票行情表格,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中刷新界面的二种方法

这篇文章主要介绍了Android中刷新界面的二种方法,本文使用Handler、postInvalidate两种方法实现界面刷新,需要的朋友可以参考下
收藏 0 赞 0 分享

Android SDK三种更新失败及其解决方法

这篇文章主要介绍了Android SDK三种更新失败及其解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(一)

Android3.0(API level 11)开始,Android设备不再需要专门的菜单键。随着这种变化,Android app应该取消对传统6项菜单的依赖。取而代之的是提供anction bar来提供基本的用户功能
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(二)

这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu)
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(三)

今天继续昨天没有讲完的Menu的学习,主要是Popup Menu的学习,需要的朋友可以参考下
收藏 0 赞 0 分享

Android显示网络图片实例

这篇文章主要介绍了Android显示网络图片的方法,以实例形式展示了Android程序显示网络图片的方法,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多