- 浏览: 185384 次
- 性别:
- 来自: 浙江
文章分类
最新评论
安卓中有一个距离感应器,我们可以用来做不少东西。不过经我测试,android设备的最大距离实在是太受限制,在一个设备中,测试结果最大距离只有5CM,超过这个距离将无法识别。下面是我设计的一个俯卧撑计数器,可能在距离上缺少测试,只要修改相关参数可能会更精确些。
具体代码如下:
public class MainActivity extends Activity {
private SensorManager sensorManager;
private TextView tvCount;
private int count=0;
private static String TAG="TEST";
private Sensor sensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensor=sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
tvCount=(TextView)findViewById(R.id.tvCount);
}
@Override
protected void onResume() {
super.onResume();
if (sensorManager != null) {// 注册监听器
sensorManager.registerListener(mProximityListener , sensor, SensorManager.SENSOR_DELAY_NORMAL);
// 第一个参数是Listener,第二个参数是所得传感器类型,第三个参数值获取传感器信息的频率
}
}
@Override
protected void onPause() {
super.onPause();
if (sensorManager != null) {// 取消监听器
sensorManager.unregisterListener(mProximityListener );
}
}
private SensorEventListener mProximityListener = new SensorEventListener() {
boolean isHigh=false,isLow=false,isHighAgain=false;
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
}
@Override
public void onSensorChanged(SensorEvent arg0) {
float[] val=arg0.values;
if(val[0]>=sensor.getMaximumRange()){
isHigh=true;
Log.e(TAG, "高度到达");
}
if(isHigh&&val[0]<=3){
isLow=true;
Log.e(TAG, "低度到达");
}
if(isLow&&val[0]>=sensor.getMaximumRange()){
isHighAgain=true;
Log.e(TAG, "高度再次到达");
}
if(isHighAgain){
count++;
tvCount.setText(count+"");
isHigh=isLow=isHighAgain=false;
Log.e(TAG, "俯卧撑加1");
}
}
};
}
布局文件activity_main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/tvCount"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="0"
android:textSize="50sp"/>
</RelativeLayout>
具体代码如下:
public class MainActivity extends Activity {
private SensorManager sensorManager;
private TextView tvCount;
private int count=0;
private static String TAG="TEST";
private Sensor sensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensor=sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
tvCount=(TextView)findViewById(R.id.tvCount);
}
@Override
protected void onResume() {
super.onResume();
if (sensorManager != null) {// 注册监听器
sensorManager.registerListener(mProximityListener , sensor, SensorManager.SENSOR_DELAY_NORMAL);
// 第一个参数是Listener,第二个参数是所得传感器类型,第三个参数值获取传感器信息的频率
}
}
@Override
protected void onPause() {
super.onPause();
if (sensorManager != null) {// 取消监听器
sensorManager.unregisterListener(mProximityListener );
}
}
private SensorEventListener mProximityListener = new SensorEventListener() {
boolean isHigh=false,isLow=false,isHighAgain=false;
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
}
@Override
public void onSensorChanged(SensorEvent arg0) {
float[] val=arg0.values;
if(val[0]>=sensor.getMaximumRange()){
isHigh=true;
Log.e(TAG, "高度到达");
}
if(isHigh&&val[0]<=3){
isLow=true;
Log.e(TAG, "低度到达");
}
if(isLow&&val[0]>=sensor.getMaximumRange()){
isHighAgain=true;
Log.e(TAG, "高度再次到达");
}
if(isHighAgain){
count++;
tvCount.setText(count+"");
isHigh=isLow=isHighAgain=false;
Log.e(TAG, "俯卧撑加1");
}
}
};
}
布局文件activity_main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/tvCount"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="0"
android:textSize="50sp"/>
</RelativeLayout>
- Count.rar (1.3 MB)
- 下载次数: 15
发表评论
-
关于Android的webSocket的简单使用
2017-05-12 14:34 987使用第三方jar: autobahn-0.5.0.jar 连 ... -
Comparator自定义排序的使用
2017-05-11 14:18 749java对于集合的自定义排序方法有: Arrays.sort ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 608我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 587Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 527先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 642相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 852参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 402图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 461参考链接:http://www.cnblogs.com/lwb ... -
解决ViewPager的addOnPageChangeListener不加载第一个的问题
2017-03-18 17:53 2649今天在使用ViewPager的时候发现个问题。 需求如下: ... -
clone方法的使用
2017-01-04 10:14 555由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2114Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 614最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 676以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 471参考链接 : https://blog.leancloud.c ... -
SpannableString简介
2016-12-10 14:03 424参考链接: http://www.cnblogs.com/ji ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1236参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2380参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 642http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 612用代码简单介绍下自定义控件的使用: 先看主activity: ...
相关推荐
基于mediapipe和KNN分类算法的健身计数器引体向上计数器深蹲计数器俯卧撑计数器python源码(毕设).zip 基于mediapipe和KNN分类算法的健身计数器引体向上计数器深蹲计数器俯卧撑计数器python源码(毕设).zip 基于...
毕业设计基于mediapipe和KNN分类算法的健身计数器_引体向上计数器_深蹲计数器_俯卧撑计数器Python源码+文档说明本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是...
在“基于Android近距离感应器的俯卧撑计数软件”项目中,开发者创新性地利用了这个传感器来实现运动监测,具体是计算用户做俯卧撑的数量。 【俯卧撑计数原理】 该软件的创新之处在于将近距离感应器的数据流与人体...
基于mediapipe和KNN分类算法实现的健身计数器/引体向上计数器/深蹲计数器/俯卧撑计数器Python源码+文档说明+演示 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行...
毕业设计基于mediapipe和KNN分类算法的健身计数器/引体向上计数器/深蹲计数器/俯卧撑计数器Python源码+文档说明 本项目的测试环境:win10,python3.7,mediapipe0.8.10,pycharm 功能:由于使用的是KNN算法而不是...
本项目是基于Mediapipe库和KNN(K近邻)分类算法实现的一个健身计数器,专门针对引体向上、深蹲、俯卧撑等常见健身动作进行计数。Mediapipe是一个跨平台的开源框架,主要用于处理多媒体数据,如图像和视频,而KNN...
在本项目中,我们将探讨如何使用Arduino开发一个俯卧撑计数器,它结合了超声波传感器HC-SR04来检测人体运动,并通过4位数字7段显示器展示计数值。这个创新的小型设备可以帮助健身爱好者跟踪他们的锻炼进度,提供实时...
功能:由于使用的是KNN算法而不是根据各个运动的特点计算骨骼之间的角度来判断动作是否完成,因此本项目可以直接计数引体向上、深蹲和俯卧撑这几种健身运动而几乎无需修改代码,只需要输入视频或调用摄像头时选择...
功能:由于使用的是KNN算法而不是根据各个运动的特点计算骨骼之间的角度来判断动作是否完成,因此本项目可以直接计数引体向上、深蹲和俯卧撑这几种健身运动而几乎无需修改代码,只需要输入视频或调用摄像头时选择...
首先,"俯卧撑计时器"是基于Android操作系统开发的,因此它必须遵循Android应用开发的规范。Android应用主要使用Java或Kotlin语言编写,这两种语言都是Google官方推荐的开发语言。开发者需要对Android SDK(软件开发...
在Android开发领域,"android 俯卧撑"可能是指一种比喻,暗示开发者需要具备扎实的基础技能,就像做俯卧撑需要强大的核心力量一样。在这个场景下,我们可以将"俯卧撑"理解为Android开发中的基本概念和技术。接下来,...
【俯卧撑计数器-项目开发】 在当今数字化时代,健身与健康领域的技术结合日益紧密,"俯卧撑计数器"项目就是一个很好的例子。这个项目利用物联网(Internet of Things, IoT)技术,旨在帮助用户更准确地记录并跟踪...
本项目旨在通过Python编程实现一个基于mediapipe和KNN分类算法的智能健身计数器,涵盖引体向上、深蹲、俯卧撑等动作。利用mediapipe库进行实时视频流处理与姿态估计,识别并跟踪人体关键点的变化。结合KNN算法对捕捉...
毕业设计基于mediapipe和KNN分类算法的健身计数器/引体向上/深蹲/俯卧撑Python源码+使用文档.zip该项目是个人毕设项目源码,评审分达到97分,都经过严格调试,确保可以运行!放心下载使用。该项目资源主要针对计算机...
这不是工作 命令行: parse deploy curl -X POST \ -H "X-Parse-Application-Id: xMCz6KllCi8Ric3MPqhIqeaW06Fb7dG8jGaxz3cv" \ -H "X-Parse-REST-API-Key: DSPE2bgSbotUNIekMCfMBqvPndUUxM5KoepnpTpq" \ ...
教你如何使用Arduino和超声波传感器HC SR04制作俯卧撑计数器,4数字7段显示 组件和耗材 Arduino UNO和Genuino UNO×1个 超声波传感器-HC-SR04(通用)×1个 跳线(通用)×1个 4位LED显示管,7段,TM1637×1个 应用...