安卓获取步数

安卓获取步数,第1张

概述清单文件添加权限:<uses-featureandroid:name="android.hardware.sensor.stepcounter"/><uses-featureandroid:name="feature:android.hardware.sensor.stepdetector"/><!--安卓10.0版本以上必须申请的健身运动权限--><uses-permissio

清单文件添加权限:

    <uses-feature androID:name="androID.harDWare.sensor.stepcounter"/>    <uses-feature androID:name="feature:androID.harDWare.sensor.stepdetector"/>    <!--安卓10.0版本以上必须申请的健身运动权限-->    <uses-permission androID:name="androID.permission.ACTIVITY_RECOGNITION" />

Activity:

package cn.areful.sensor;import androID.Manifest;import androID.app.Activity;import androID.content.Context;import androID.content.Intent;import androID.content.pm.PackageManager;import androID.harDWare.Sensor;import androID.harDWare.SensorEvent;import androID.harDWare.SensorEventListener;import androID.harDWare.SensorManager;import androID.net.Uri;import androID.os.Build;import androID.os.Bundle;import androID.provIDer.Settings;import androID.Widget.TextVIEw;import androID.Widget.Toast;import androIDx.annotation.NonNull;import androIDx.appcompat.app.AlertDialog;import androIDx.core.app.ActivityCompat;import androIDx.core.content.ContextCompat;import java.util.Locale;import cn.areful.myapplication.R;/** * Created by areful on 2020/09/27. */public class StepDetectActivity extends Activity {    //动态申请健康运动权限    private static final String[] ACTIVITY_RECOGNITION_PERMISSION = {Manifest.permission.ACTIVITY_RECOGNITION};    private TextVIEw mStepText;    private SensorManager mSensorManager;    private MySensorEventListener mListener;    private int mStepDetector = 0;  // 自应用运行以来STEP_DETECTOR检测到的步数    private int mStepCounter = 0;   // 自系统开机以来STEP_COUNTER检测到的步数    public static Intent buildIntent(Context context) {        Intent intent = new Intent(context, StepDetectActivity.class);        if (!(context instanceof Activity)) {            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        }        return intent;    }    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_step_detect);        mStepText = (TextVIEw) findVIEwByID(R.ID.stepText);        mSensorManager = (SensorManager) getSy@R_403_6563@Service(Context.SENSOR_SERVICE);        mListener = new MySensorEventListener();        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {            // 检查该权限是否已经获取            int get = ContextCompat.checkSelfPermission(this, ACTIVITY_RECOGNITION_PERMISSION[0]);            // 权限是否已经 授权 GRANTED---授权  DINIED---拒绝            if (get != PackageManager.PERMISSION_GRANTED) {                // 如果没有授予该权限,就去提示用户请求自动开启权限                ActivityCompat.requestPermissions(this, ACTIVITY_RECOGNITION_PERMISSION, 321);            }        }    }    @OverrIDe    protected voID onResume() {        super.onResume();        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            mSensorManager.registerListener(mListener, mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR),                    SensorManager.SENSOR_DELAY_norMAL);            mSensorManager.registerListener(mListener, mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER),                    SensorManager.SENSOR_DELAY_norMAL);        }    }    @OverrIDe    protected voID onPause() {        super.onPause();        mSensorManager.unregisterListener(mListener);    }    @OverrIDe    public voID onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        super.onRequestPermissionsResult(requestCode, permissions, grantResults);        if (requestCode == 321) {            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {                if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {                    //提示用户手动开启权限                    new AlertDialog.Builder(this)                            .setTitle("健康运动权限")                            .setMessage("健康运动权限不可用")                            .setPositivebutton("立即开启", (dialog12, which) -> {                                // 跳转到应用设置界面                                Intent intent = new Intent();                                intent.setAction(Settings.ACTION_APPliCATION_DETAILS_SETTINGS);                                Uri uri = Uri.fromParts("package", getPackagename(), null);                                intent.setData(uri);                                startActivityForResult(intent, 123);                            })                            .setNegativebutton("取消", (dialog1, which) -> {                                Toast.makeText(getApplicationContext(), "没有获得权限,应用无法运行!", Toast.LENGTH_SHORT).show();                                finish();                            }).setCancelable(false).show();                }            }        }    }    private class MySensorEventListener implements SensorEventListener {        @OverrIDe        public voID onSensorChanged(SensorEvent event) {            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {                Sy@R_403_6563@.out.println("@@@:" + event.sensor.getType() + "--" + Sensor.TYPE_STEP_DETECTOR + "--" + Sensor.TYPE_STEP_COUNTER);                if (event.sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {                    if (event.values[0] == 1.0f) {                        mStepDetector++;                    }                } else if (event.sensor.getType() == Sensor.TYPE_STEP_COUNTER) {                    mStepCounter = (int) event.values[0];                }                String desc = String.format(Locale.CHInesE, "设备检测到您当前走了%d步,自开机以来总数为%d步", mStepDetector, mStepCounter);                mStepText.setText(desc);            }        }        @OverrIDe        public voID onAccuracyChanged(Sensor sensor, int accuracy) {        }    }}

参考:

https://blog.csdn.net/weixin_43763952/article/details/106590253

总结

以上是内存溢出为你收集整理的安卓获取步数全部内容,希望文章能够帮你解决安卓获取步数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1060146.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存