自己写一个安卓手机软件计算煮饭时间

最近这些日子,经常需要每天晚上在电饭锅上设置定时煮饭,以备第二天的早餐。但是计算倒计时时间是一件讨厌并且费脑子的事情。于是我趁今天周末写了这么一个Android手机软件,还开放源代码了。

煮饭时间”——一个很简单的计算煮饭时间的Android手机软件,作者Liigo。

项目首页:https://github.com/liigo/cooktime

下载地址:CookTime.apk (270KB)

“煮饭时间”软件的主要功能是:

  • 计算并显示当前时间与开饭时间的时间间隔

  • 软件启动后、修改开饭时间后自动计算

  • 显示部分放在屏幕上方、操作部分放在屏幕下方,方便使用

  • 自动记忆修改后的开饭时间

  • 可以重新计算时间间隔

软件主界面如下:

  


软件核心Java源代码如下

package com.liigo.cooktime;

public class MainActivity extends Activity {

	private TextView   textViewShowTime;
	private TimePicker timePickerMealTime;
	private Button     buttonCalcTime;
	SharedPreferences  pref;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		textViewShowTime   = (TextView)   findViewById(R.id.textViewShowTime);
		timePickerMealTime = (TimePicker) findViewById(R.id.timePickerMealTime);
		buttonCalcTime     = (Button)     findViewById(R.id.buttonCalcTime);
		
		// 初始化开饭时间,恢复上次运行时存储的开饭时间
		pref = PreferenceManager.getDefaultSharedPreferences(this);
		timePickerMealTime.setIs24HourView(true);
		timePickerMealTime.setCurrentHour(pref.getInt("MealTime.Hour", 8));
		timePickerMealTime.setCurrentMinute(pref.getInt("MealTime.Minute", 0));
		
		calcTime(); // 计算并显示距离开饭时间的间隔时长

		buttonCalcTime.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View view) {
				calcTime();
			}
		});
		
		timePickerMealTime.setOnTimeChangedListener(new OnTimeChangedListener() {
			@Override
			public void onTimeChanged(TimePicker timePicker, int hour, int minute) {
				calcTime();
				// 存储开饭时间
				Editor editor = pref.edit();
				editor.putInt("MealTime.Hour", hour);
				editor.putInt("MealTime.Minute", minute);
				editor.commit();
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	
	/**
	 * 计算并显示当前时间与开饭时间之间间隔的时间差
	 */
	private void calcTime() {
		// 现在时间(本地时区)
		Calendar calendar = Calendar.getInstance();
		int fromHour   = calendar.get(Calendar.HOUR_OF_DAY); // 24小时制
		int fromMinute = calendar.get(Calendar.MINUTE);
		// 开饭时间
		int endHour   = timePickerMealTime.getCurrentHour(); // 24小时制
		int endMinute = timePickerMealTime.getCurrentMinute();
		Log.d("cooktime", "from "+fromHour+":"+fromMinute+" to "+endHour+":"+endMinute);
		
		// 取二者时间间隔
		int hour, minute;
		if(fromHour > endHour || (fromHour == endHour && fromMinute > endMinute)) {
			endHour += 24;
		}
		hour = endHour - fromHour;
		minute = endMinute - fromMinute;
		if(minute < 0) {
			minute += 60;
			hour--;
			if(hour < 0) hour += 24;
		}

		String showtimeStr = "";
		showtimeStr += hour + "小时" + minute + "分钟";
		textViewShowTime.setText(showtimeStr);
	}

}


发布了275 篇原创文章 · 获赞 442 · 访问量 244万+

猜你喜欢

转载自blog.csdn.net/liigo/article/details/18148257