您的位置:首页 > 实例下载 > Java

基于地图的计步器实例

实例下载
  • 资源等级:
     
  • 开发语言:
    Java  
  • 发布时间:
    02-24 
  • 资源大小:
    2.68M 
  • 资源人气:
    28 
  • 所需积分:
  • 相关标签:
    Android平台开发,地图,计步器,的 
资源介绍 Resource Information
/*

* Pedometer - Android App

* Copyright (C) 2009 Levente Bagi

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program. If not, see <http://www.gnu.org/licenses/>.

*/

package name.bagi.levente.pedometer;

import com.google.tts.TTS;

/**

* Calculates and displays pace (steps / minute), handles input of desired pace,

* notifies user if he/she has to go faster or slower.

*

* Uses {@link PaceNotifier}, calculates speed as product of pace and step length.

*

* @author Levente Bagi

*/

public class SpeedNotifier implements PaceNotifier.Listener, SpeakingTimer.Listener {

public interface Listener {

public void valueChanged(float value);

public void passValue();

}

private Listener mListener;

int mCounter = 0;

float mSpeed = 0;

boolean mIsMetric;

float mStepLength;

PedometerSettings mSettings;

TTS mTts;

/** Desired speed, adjusted by the user */

float mDesiredSpeed;

/** Should we speak? */

boolean mShouldTellFasterslower;

boolean mShouldTellSpeed;

/** When did the TTS speak last time */

private long mSpokenAt = 0;

public SpeedNotifier(Listener listener, PedometerSettings settings, TTS tts) {

mListener = listener;

mTts = tts;

mSettings = settings;

mDesiredSpeed = mSettings.getDesiredSpeed();

reloadSettings();

}

public void setSpeed(float speed) {

mSpeed = speed;

notifyListener();

}

public void reloadSettings() {

mIsMetric = mSettings.isMetric();

mStepLength = mSettings.getStepLength();

mShouldTellSpeed = mSettings.shouldTellSpeed();

mShouldTellFasterslower =

mSettings.shouldTellFasterslower()

&& mSettings.getMaintainOption() == PedometerSettings.M_SPEED;

notifyListener();

}

public void setTts(TTS tts) {

mTts = tts;

}

public void setDesiredSpeed(float desiredSpeed) {

mDesiredSpeed = desiredSpeed;

}

private void notifyListener() {

mListener.valueChanged(mSpeed);

}

@Override

public void paceChanged(int value) {

if (mIsMetric) {

mSpeed = // kilometers / hour

value * mStepLength // centimeters / minute

/ 100000f * 60f; // centimeters/kilometer

}

else {

mSpeed = // miles / hour

value * mStepLength // inches / minute

/ 63360f * 60f; // inches/mile

}

tellFasterSlower();

notifyListener();

}

/**

* Say slower/faster, if needed.

*/

private void tellFasterSlower() {

if (mShouldTellFasterslower && mTts != null) {

long now = System.currentTimeMillis();

if (now - mSpokenAt > 3000 && !mTts.isSpeaking()) {

float little = 0.10f;

float normal = 0.30f;

float much = 0.50f;

boolean spoken = true;

if (mSpeed < mDesiredSpeed * (1 - much)) {

mTts.speak("much faster!", 0, null);

}

else

if (mSpeed > mDesiredSpeed * (1 much)) {

mTts.speak("much slower!", 0, null);

}

else

if (mSpeed < mDesiredSpeed * (1 - normal)) {

mTts.speak("faster!", 0, null);

}

else

if (mSpeed > mDesiredSpeed * (1 normal)) {

mTts.speak("slower!", 0, null);

}

else

if (mSpeed < mDesiredSpeed * (1 - little)) {

mTts.speak("a little faster!", 0, null);

}

else

if (mSpeed > mDesiredSpeed * (1 little)) {

mTts.speak("a little slower!", 0, null);

}

else {

spoken = false;

}

if (spoken) {

mSpokenAt = now;

}

}

}

}

public void passValue() {

// Not used

}

@Override

public void speak() {

if (mSettings.shouldTellSpeed() && mTts != null) {

if (mSpeed >= .01f) {

mTts.speak(("" (mSpeed 0.000001f)).substring(0, 4) (mIsMetric ? " kilometers per hour" : " miles per hour"), 1, null);

}

}

}

}


Java 开发实例资源基于地图的计步器实例下载。
tags:Android平台开发,地图,计步器,的
下载说明 Download Information
  • 推荐使用迅雷下载本站资源,使用 WinRAR v3.10 以上版本解压。
  • 如果这个资源总是不能下载的请点击【报告错误】,谢谢合作!!
  • 下载本站资源,如果服务器暂不能下载请过一段时间重试!
  • 如果遇到什么问题,请联系我们,我们将在那里提供更多 、更好的资源!
  • 本站提供的资源仅供学习研究之用,请勿用于商业用途,请购买正版。
Java热门 Java Hot
推荐 Commend Download
下载地址(积分:2)
CopyRight 程序员实例资源 www.zgfreedown.com ® 2018-2020