Android距离传感器应用之俯卧撑计数
来源:互联网 发布:数据鲜活度 编辑:程序博客网 时间:2024/04/23 18:21
主要代码为:
package com.example.happypushup2;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.os.SystemClock;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.TextView;
import android.widget.TimePicker;
import android.media.MediaPlayer.OnCompletionListener;
import java.io.IOException;
import java.text.DecimalFormat;
public class SurfaceViewAcitvityJs extends Activity implements
SensorEventListener {
private Chronometer myChronometer = null;private SurfaceViewAcitvityJs activity = null;private Button butStart = null;private Button butStop = null;DecimalFormat nf = new DecimalFormat("0.00");private SensorManager mSensorMgr = null;Sensor mSensor = null;private double mGX = 0;private TextView fwcGs = null;String time = null;String settime = "02:00";private TimePickerDialog tpd = null; // 时间选择器private int count = 9;private int counter=9;private int group=0;private TextView fwcSj = null;String S1;String S2;int mSound_0 = 0;private MediaPlayer mMediaPlayer;private void playLocalFile() { mMediaPlayer = MediaPlayer.create(this, R.raw.in_call_alarm); // 播放工程res目录下的raw目录中的音乐文件in_call_alarm try { mMediaPlayer.prepare(); } catch (IllegalStateException e) { } catch (IOException e) { } mMediaPlayer.start(); // mMediaPlayer.setOnCompletionListener(new OnCompletionListener() { // public void onCompletion(MediaPlayer mp) { // //播完了接着播或者关闭mMediaPlayer,只播放一次 // });}@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_surface_view_acitvity_js); fwcGs = (TextView) findViewById(R.id.textViewGs);//获取组件 fwcSj = (TextView) findViewById(R.id.textViewSj); fwcSj.setText(settime); this.butStart = (Button) super.findViewById(R.id.butStart); this.butStop = (Button) super.findViewById(R.id.butStop); butStart.setWidth(80); butStart.setHeight(60); butStop.setWidth(80); butStop.setHeight(60); // 设置事件类,打开时间对话框 this.butStart.setOnClickListener(new OnClickListenerImpl()); // 设置事件类,返回主界面 this.butStop.setOnClickListener(new OnClickListenerImplStop()); // 创建一个声音播放池 // mSoundPool = new SoundPool (2, AudioManager.STREAM_MUSIC,100); // 音效加载 // mSound_0 = mSoundPool.load(this, R.raw.voic_p1, 0); // 计时器初始化 this.myChronometer = (Chronometer) super .findViewById(R.id.myChronometer); this.myChronometer.setFormat("%s"); // 计时器侦听 this.myChronometer .setOnChronometerTickListener(new OnChronometerTickListenerImpl()); // SensorMannager 传感器管理对象,用sensor mSensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE); // 获取近距离感应器 mSensor = mSensorMgr.getDefaultSensor(Sensor.TYPE_PROXIMITY); // 注册 listener,第三个参数是检测的精确度 mSensorMgr.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_FASTEST); playLocalFile();}// 获取近距离感应器状态变化public void onSensorChanged(SensorEvent event) { // 身体接近近距离感应器计半个数,离开感应器计半个数 mGX = mGX + 1; // 俯卧撑计数,显示到文本 fwcGs.setText(nf.format(mGX/2)); // 如果是第一次触发近距离感应器,计时器开始计时 if (mGX == 1) { myChronometer.start(); count--; } // 播放音效,声音提示 // mSoundPool.play(mSound_0, 1, 1, 0, 0, 1); if ((mGX-1)%9==0) { OnFinishingListener(); //Intent intent = new Intent(activity,GreatNew.class); group++; counter--; count=counter; AlertDialog.Builder builder = new Builder(SurfaceViewAcitvityJs.this); builder.setTitle("确认" ) ; builder.setPositiveButton("是" , null ); builder.show(); //intent.putExtra("group", group); //activity.startActivity(intent); } /* * if(mGX == 10.5 || mGX == 20.5 || mGX == 30.5){ OnFinishingListener(); * Intent intent = new Intent(activity,GreatNew.class);//触发新的activity * activity.startActivity(intent); } */}// 语音提示:你真棒private void OnFinishingListener() { // TODO Auto-generated method stub mMediaPlayer = MediaPlayer.create(this, R.raw.nizhenbang); // 播放工程res目录下的raw目录中的音乐文件 你真棒 try { mMediaPlayer.prepare(); } catch (IllegalStateException e) { } catch (IOException e) { } mMediaPlayer.start();}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}// 计时器侦听事件,当计时器与设置的时间相等时,弹出对话框。private class OnChronometerTickListenerImpl implements Chronometer.OnChronometerTickListener { public void onChronometerTick(Chronometer chronometer) { time = chronometer.getText().toString() .replaceAll("[^(\\d{2}:\\d {2})]", ""); if (settime.equals(time)) { openOptionsDialog(); } }}// 计时结束时的对话框private void openOptionsDialog() { new AlertDialog.Builder(this) .setTitle("End Up!") .setMessage(fwcGs.getText()) .setPositiveButton(" 确 认 ", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { myChronometer.stop(); myChronometer.setBase(SystemClock .elapsedRealtime()); mGX = 0.0; fwcGs.setText(nf.format(mGX)); } }).show();}// 时间对话框的设置,控件设置多长时间private class OnClickListenerImpl implements View.OnClickListener { public void onClick(View view) { mGX = 0; fwcGs.setText(nf.format(mGX)); Dialog dialog = new TimePickerDialog(SurfaceViewAcitvityJs.this, new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { if (hourOfDay <= 9) { S2 = "0" + String.valueOf(hourOfDay); } else { S2 = String.valueOf(hourOfDay); } if (minute <= 9) { S1 = "0" + String.valueOf(minute); } else { S1 = String.valueOf(minute); } fwcSj.setText(S2 + ":" + S1); settime = (String) fwcSj.getText(); } }, 02, 00, true); dialog.show(); }}private class OnClickListenerImplStop implements View.OnClickListener { @Override public void onClick(View view) { // TODO Auto-generated method stub mGX = 0; fwcGs.setText(nf.format(mGX)); fwcSj.setText("00" + ":" + "00"); settime = (String) fwcSj.getText(); myChronometer.stop(); }}
}
- Android距离传感器应用之俯卧撑计数
- Android传感器之距离传感器
- android距离传感器的应用
- Android 之 传感器 应用
- Android监听距离传感器
- Android距离传感器
- Android——距离传感器(PROXIMITY)的应用
- Android之控制手机屏幕熄灭(距离传感器)
- Android传感器(四):距离传感器
- Android传感器应用之:摇一摇小例子
- Android传感器之磁场传感器
- Android传感器之陀螺仪传感器
- Android传感器之加速度传感器
- Android传感器之光照传感器
- Android传感器之姿态传感器
- Android 传感器之方向传感器
- Android传感器应用
- Android的传感器应用
- 项目40--立体类族共有的抽象类
- 前端弹窗插件,layer
- Unity Shader修改Shader属性
- Android手机与特定传感器节点连接
- svn使用技巧
- Android距离传感器应用之俯卧撑计数
- c++之for循环的说明
- Latex PDF文档目录乱码
- iOS学习05C语言函数
- PyBrain-Python的人工神经网络
- Android加速度传感器应用之晃动次数测试(摇一摇)
- 成长如棋,在于谋
- 产品开发中项目与项目管理
- 使用grunt搭建工程