/*
* Pedometer - Android App
* Copyright (C) 2009 Levente Bagi
* Download by http://www.codefans.net
* 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 android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.preference.PreferenceManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.google.tts.TTS;
public class Pedometer extends Activity {
private SharedPreferences mSettings;
private PedometerSettings mPedometerSettings;
private TextView mStepValueView;
private TextView mPaceValueView;
private TextView mDistanceValueView;
private TextView mSpeedValueView;
private TextView mCaloriesValueView;
TextView mDesiredPaceView;
private int mStepValue;
private int mPaceValue;
private float mDistanceValue;
private float mSpeedValue;
private int mCaloriesValue;
private float mDesiredPaceOrSpeed;
private int mMaintain;
private boolean mIsMetric;
private float mMaintainInc;
private boolean mIsRunning;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mStepValue = 0;
mPaceValue = 0;
setContentView(R.layout.main);
startStepService();
}
@Override
protected void onResume() {
super.onResume();
mSettings = PreferenceManager.getDefaultSharedPreferences(this);
mPedometerSettings = new PedometerSettings(mSettings);
if (mSettings.getBoolean("desired_pace_voice", false)) {
ensureTtsInstalled();
}
if (mIsRunning) {
bindStepService();
}
mStepValueView = (TextView) findViewById(R.id.step_value);
mPaceValueView = (TextView) findViewById(R.id.pace_value);
mDistanceValueView = (TextView) findViewById(R.id.distance_value);
mSpeedValueView = (TextView) findViewById(R.id.speed_value);
mCaloriesValueView = (TextView) findViewById(R.id.calories_value);
mDesiredPaceView = (TextView) findViewById(R.id.desired_pace_value);
mIsMetric = mPedometerSettings.isMetric();
((TextView) findViewById(R.id.distance_units)).setText(getString(
mIsMetric
? R.string.kilometers
: R.string.miles
));
((TextView) findViewById(R.id.speed_units)).setText(getString(
mIsMetric
? R.string.kilometers_per_hour
: R.string.miles_per_hour
));
mMaintain = mPedometerSettings.getMaintainOption();
((LinearLayout) this.findViewById(R.id.desired_pace_control)).setVisibility(
mMaintain != PedometerSettings.M_NONE
? View.VISIBLE
: View.GONE
);
if (mMaintain == PedometerSettings.M_PACE) {
mMaintainInc = 5f;
mDesiredPaceOrSpeed = (float)mPedometerSettings.getDesiredPace();
}
else
if (mMaintain == PedometerSettings.M_SPEED) {
mDesiredPaceOrSpeed = mPedometerSettings.getDesiredSpeed();
mMaintainInc = 0.1f;
}
Button button1 = (Button) findViewById(R.id.button_desired_pace_lower);
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mDesiredPaceOrSpeed -= mMaintainInc;
mDesiredPaceOrSpeed = Math.round(mDesiredPaceOrSpeed * 10) / 10f;
displayDesiredPaceOrSpeed();
setDesiredPaceOrSpeed(mDesiredPaceOrSpeed);
}
});
Button button2 = (Button) findViewById(R.id.button_desired_pace_raise);
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mDesiredPaceOrSpeed += mMaintainInc;
mDesiredPaceOrSpeed = Math.round(mDesiredPaceOrSpeed * 10) / 10f;
displayDesiredPaceOrSpeed();
setDesiredPaceOrSpeed(mDesiredPaceOrSpeed);
}
});
if (mMaintain != PedometerSettings.M_NONE) {
((TextView) findViewById(R.id.desired_pace_label)).setText(
mMaintain == PedometerSettings.M_PACE
? R.string.desired_pace
: R.string.desired_speed
);
}
displayDesiredPaceOrSpeed();
}
private void displayDesiredPaceOrSpeed() {
if (mMaintain == PedometerSettings.M_PACE) {
mDesiredPaceView.setText("" + (int)mDesiredPaceOrSpeed);
}
else {
mDesiredPaceView.setText("" + mDesiredPaceOrSpeed);
}
}
@Override
protected void onPause() {
if (mIsRunning) {
unbindStepService();
}
super.onPause();
savePaceSetting();
}
@Override
protected void onStop() {
super.onStop();
}
protected void onDestroy() {
super.onDestroy();
}
private void setDesiredPaceOrSpeed(float desiredPaceOrSpeed) {
if (mService != null) {
if (mMaintain == PedometerSettings.M_PACE) {
mService.setDesiredPace((int)desiredPaceOrSpeed);
}
else
if (mMaintain == PedometerSettings.M_SPEED) {
mService.setDesiredSpeed(desiredPaceOrSpeed);
}
}
}
private void savePaceSetting() {
mPedometerSettings.savePaceOrSpeedSetting(mMaintain, mDesiredPaceOrSpeed);
}
private StepService mService;
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
mService = ((StepService.StepBinder)service).getService();
mService.registerCallback(mCallback);
mService.reloadSettings();
}
public void onServiceDisconnected(ComponentName className) {
mService = null;
}
};
private void startStepService() {
mIsRunning = true;
startService(new Intent(Pedometer.this,
StepService.class));
}
private void bindStepService() {
bindService(new Intent(Pedometer.this,
StepService.class), mConnection, Context.BIND_AUTO_CREATE);
}
private void unbindStepService() {
unbindService(mConnection);
}
private void stopStepService() {
mIsRunning = false;
if (mService != null) {
stopService(new Intent(Pedometer.this,
StepService.class));
}
}
private void resetValues(boolean updateDisplay) {
if (mService != null && mIsRunning) {
mService.resetValues();
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
一个Android医生助理信息系统源代码 (257个子文件)
all-wcprops 5KB
all-wcprops 2KB
all-wcprops 596B
all-wcprops 590B
all-wcprops 455B
all-wcprops 380B
all-wcprops 344B
all-wcprops 264B
all-wcprops 202B
all-wcprops 184B
all-wcprops 174B
all-wcprops 172B
all-wcprops 164B
all-wcprops 84B
all-wcprops 84B
all-wcprops 84B
all-wcprops 76B
all-wcprops 76B
all-wcprops 76B
all-wcprops 71B
all-wcprops 71B
all-wcprops 71B
all-wcprops 69B
all-wcprops 66B
all-wcprops 66B
all-wcprops 66B
resources.ap_ 23KB
Pedometer.apk 58KB
StepService.class 11KB
Pedometer.class 11KB
PaceNotifier.class 4KB
SpeedNotifier.class 4KB
PedometerSettings.class 4KB
R$string.class 4KB
CaloriesNotifier.class 3KB
EditMeasurementPreference.class 3KB
StepDetector.class 3KB
DistanceNotifier.class 3KB
StepDisplayer.class 3KB
SpeakingTimer.class 2KB
Pedometer$3.class 2KB
Pedometer$1.class 2KB
Pedometer$2.class 1KB
StepService$5.class 1KB
StepService$3.class 1KB
StepService$4.class 1KB
StepService$1.class 1KB
StepService$2.class 1KB
R$id.class 1KB
Pedometer$5.class 1KB
Pedometer$4.class 1KB
StepLengthPreference.class 1KB
BodyWeightPreference.class 1KB
R$dimen.class 1002B
StepBuzzer.class 959B
R$array.class 883B
R.class 818B
StepService$StepBinder.class 669B
Settings.class 552B
R$drawable.class 496B
R$color.class 473B
R$layout.class 421B
R$xml.class 419B
R$attr.class 367B
StepService$ICallback.class 363B
CaloriesNotifier$Listener.class 298B
DistanceNotifier$Listener.class 298B
SpeedNotifier$Listener.class 289B
StepDisplayer$Listener.class 289B
PaceNotifier$Listener.class 285B
SpeakingTimer$Listener.class 255B
StepListener.class 176B
Thumbs.db 7KB
classes.dex 79KB
entries 7KB
entries 2KB
entries 785B
entries 751B
entries 721B
entries 679B
entries 673B
entries 548B
entries 359B
entries 349B
entries 346B
entries 344B
entries 340B
entries 277B
entries 221B
entries 221B
entries 221B
entries 211B
entries 211B
entries 211B
entries 203B
entries 203B
entries 203B
entries 198B
entries 198B
entries 190B
共 257 条
- 1
- 2
- 3
资源评论
- 阔想天空2014-04-30单机的,无后台
- y9800512013-10-30可以用,谢谢分享。
- 蒋宇Sunga2013-10-19实用性较强,不错
- 俞莫2013-10-19不错的资料,可以参考。
- chm965212013-08-14可以学习的,有一定价值
lxllb8
- 粉丝: 66
- 资源: 579
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功