초 정밀 안 드 로 이 드 핸드폰 만보 기 개발

소 미,매력 족,화 웨 이에 서 직접 측정 할 수 있 습 니 다.이 app 은 백 스테이지 service 계 i 서 비 스 를 사용 하기 때문에 app 이 핸드폰 에 의 해 백 스테이지 에서 죽 이지 않 는 다 면 정상 적 인 계획 i 를 사용 할 수 있 습 니 다.위의 그림:



1.AndroidManifest.xml 에 권한 추가

<!-- i     -->
 <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.휴대폰 지원 여부 확인 i

 /**
 *           i
 *
 * @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
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기