想写个整点报时的小程序。 使用service在后台不断扫描系统时间,扫描到整点的就启动铃声播放,注意改变电源管理模式,不要让cpu睡眠 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个是我写的希望对你有帮助。package com.love;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;import java.util.Set;import com.love.R;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Spinner;import android.widget.TextView;public class Time extends Activity { private EditText EditText01;//EditText01������ʾ��ͬ������ private EditText EditText02;//�������벻ͬ�IJ����� private TextView TextView01;//��ʾ��ǰʱ�� private Button Button01;//��ʱ��İ�ť private Spinner Spinner_001; private Spinner Spinner_002; private Spinner Spinner_011; private Spinner Spinner_012; private EditText EditText_001; private EditText EditText_002; private CheckBox CheckBox01;//�Ƿ���ʱ��� private boolean b1=false;//�Ƿ�������ʱ��� private String time;//���ڵ�ǰʱ�� private String s1 = "";//�����û������ʱ�� private String s2 = "";//��ͬ���� private Date d1;//��ǰʱ�� private Map<String, String> dd = new HashMap<String, String>();//����ʱ��� private Handler mHandler = new Handler() {//����ui public void handleMessage(Message msg) {//��ȡ��Ϣ�ж����� switch (msg.what) { case 1: updateTitle(); break; } }; }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); EditText01 = (EditText) findViewById(R.id.EditText01); EditText02 = (EditText) findViewById(R.id.EditText02); EditText_001 = (EditText) findViewById(R.id.EditText_001); EditText_002 = (EditText) findViewById(R.id.EditText_002); TextView01 = (TextView) findViewById(R.id.TextView01); Spinner_001=(Spinner)findViewById(R.id.Spinner_001); Spinner_002=(Spinner)findViewById(R.id.Spinner_002); Spinner_011=(Spinner)findViewById(R.id.Spinner_011); Spinner_012=(Spinner)findViewById(R.id.Spinner_012); CheckBox01=(CheckBox)findViewById(R.id.CheckBox01); Button01=(Button)findViewById(R.id.Button01); Button01.setOnClickListener(new ButtonListener());//������� new Thread(new myThread()).start();//�����߳� } class ButtonListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub //�ж�������ʱ���û if(EditText02.getText()==null||EditText_001.getText()==null ||EditText_002.getText()==null){ b1=true; } //���ʱ���Ͳ����ı��� else{ if(CheckBox01.isChecked()){ s1=String.valueOf(Spinner_001.getSelectedItem())+"-" +String.valueOf(Spinner_002.getSelectedItem())+"-" +String.valueOf(Spinner_011.getSelectedItem())+" " +String.valueOf(Spinner_012.getSelectedItem())+":" +String.valueOf(EditText_001.getText())+":" +String.valueOf(EditText_002.getText()); s2=String.valueOf(EditText02.getText()); dd.put(s1, s2); s1=""; s2=""; }else //����ʱ��ĵĻ�ȡ { s1=String.valueOf(Spinner_001.getSelectedItem())+"-" +String.valueOf(Spinner_002.getSelectedItem())+"-" +String.valueOf(Spinner_011.getSelectedItem())+" " +String.valueOf(Spinner_012.getSelectedItem())+":" +String.valueOf(EditText_001.getText())+":" +String.valueOf(EditText_002.getText()); s2=String.valueOf(EditText02.getText()); } } } } class myThread implements Runnable { public void run() { while (true) {//�߳�1��˯��һ��ѭ��������Ϣ Message message = new Message(); message.what = 1; mHandler.sendMessage(message); try { Thread.sleep(1000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } } public void updateTitle() { d1 = new Date();//��ȡ��ǰʱ��ת����ʽ time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(d1); TextView01.setText(time);//��ʾ��ǰʱ������� if(b1==true){//û��������ʱ�����ʾ EditText01.setText("ͬѧ����������"); b1=false; } else{ if(CheckBox01.isChecked()){ Set<String> set = dd.keySet(); for (String s : set) {//����map��ȡʱ�����в�ͬ�IJ��� if (s.equals(time)) { if (dd.get(s).equals("eat")) { EditText01.setText("ͬѧ���"+dd.get(s)+"��Ŷ��"); } if (dd.get(s).equals("xizao")) { EditText01.setText("ͬѧ���"+dd.get(s)+"��Ŷ��"); } if (dd.get(s).equals("sleep")) { EditText01.setText("ͬѧ���"+dd.get(s)+"��Ŷ��"); } } } } else{ if (time.equals(s1)) { //����ʱ���IJ����� EditText01.setText("ͬѧ���"+s2+"��Ŷ��"); } } } }} http://zxandroid.javaeye.com/blog/419305简单的闹钟使用 能不能代码给我邮箱发份谢谢。[email protected] 学习,想到了前面的取得系统时间,没想到后面的不让cpu睡眠。 还算好吧,我在项目中也是设置为一分钟扫描一次。因为不能让cpu睡眠,所以耗电那是肯定的,这也没办法,那是现在的电池技术发展落后的原因。 楼上的回复没有一个沾边的,android有Alarm这个类,处理闹铃的到时候会自动执行你的程序的。 嘛,更正一点,原生的Android系统应该是没有Alarm这个类的(起码2.2版本的没有,之后的有没有我就不知道了)。DrSmart说的Alarm类其实在AlarmClock项目中(2.3以后项目名改为DeskClock),就是闹钟的那个项目。 从AlarmClock项目中抽取Alarm和Alarms两个类可以让你自由的操作闹钟,你可以随意的添加,删除,修改闹钟,嘛的确能够实现正点报时的功能,不过那样界面就和闹钟一样了。 为了区别开的话,你最好自己实现。使用android.app.AlarmManager这个类你可是比较轻松的实现这个整点报时的功能,利用AlarmManager.setRepeating可以设置一个间隔为1小时的重复闹钟,你就不需要去扫描系统时间了。 实现一个receiver来接收AlarmManager发出的广播,然后准备一个activity(用于在界面上提醒),或者准备一个service(用户播放报时的音乐),当然最好是activity和service都写啦,这样你就可以获得AlarmClock一样效果。 建议你看一下AlarmClock的源码,看懂这份源码以后,你会觉得整点报时的功能很简单。 如何让图片先淡化显示后淡化消失 android图像处理基础 如何下载google code?用GIT 在软件中 设置时间提醒如何实现 webview触摸或滚动网页时放大镜效果实现 誓师贴 ListView 间隔的颜色 android使用jni调用gsoap问题!!!! 怎样修改android 中 setting的日期(年月日)格式使TextClock跟着相应的改变 点击按钮toast为什么没有显示啊?求解! 请教个关于ContentProvider的问题,谢谢! 求解:Preference 怎么手动销毁
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import com.love.R;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;public class Time extends Activity {
private EditText EditText01;//EditText01������ʾ��ͬ������
private EditText EditText02;//�������벻ͬ�IJ�����
private TextView TextView01;//��ʾ��ǰʱ��
private Button Button01;//��ʱ��İ�ť
private Spinner Spinner_001;
private Spinner Spinner_002;
private Spinner Spinner_011;
private Spinner Spinner_012;
private EditText EditText_001;
private EditText EditText_002;
private CheckBox CheckBox01;//�Ƿ���ʱ���
private boolean b1=false;//�Ƿ�������ʱ���
private String time;//���ڵ�ǰʱ��
private String s1 = "";//�����û������ʱ��
private String s2 = "";//��ͬ����
private Date d1;//��ǰʱ��
private Map<String, String> dd = new HashMap<String, String>();//����ʱ���
private Handler mHandler = new Handler() {//����ui
public void handleMessage(Message msg) {//��ȡ��Ϣ�ж�����
switch (msg.what) {
case 1:
updateTitle();
break;
}
};
}; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText01 = (EditText) findViewById(R.id.EditText01);
EditText02 = (EditText) findViewById(R.id.EditText02);
EditText_001 = (EditText) findViewById(R.id.EditText_001);
EditText_002 = (EditText) findViewById(R.id.EditText_002);
TextView01 = (TextView) findViewById(R.id.TextView01);
Spinner_001=(Spinner)findViewById(R.id.Spinner_001);
Spinner_002=(Spinner)findViewById(R.id.Spinner_002);
Spinner_011=(Spinner)findViewById(R.id.Spinner_011);
Spinner_012=(Spinner)findViewById(R.id.Spinner_012);
CheckBox01=(CheckBox)findViewById(R.id.CheckBox01);
Button01=(Button)findViewById(R.id.Button01);
Button01.setOnClickListener(new ButtonListener());//�������
new Thread(new myThread()).start();//�����߳�
}
class ButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//�ж�������ʱ���û
if(EditText02.getText()==null||EditText_001.getText()==null
||EditText_002.getText()==null){
b1=true;
}
//���ʱ���Ͳ����ı���
else{
if(CheckBox01.isChecked()){
s1=String.valueOf(Spinner_001.getSelectedItem())+"-"
+String.valueOf(Spinner_002.getSelectedItem())+"-"
+String.valueOf(Spinner_011.getSelectedItem())+" "
+String.valueOf(Spinner_012.getSelectedItem())+":"
+String.valueOf(EditText_001.getText())+":"
+String.valueOf(EditText_002.getText());
s2=String.valueOf(EditText02.getText());
dd.put(s1, s2);
s1="";
s2="";
}else
//����ʱ��ĵĻ�ȡ
{
s1=String.valueOf(Spinner_001.getSelectedItem())+"-"
+String.valueOf(Spinner_002.getSelectedItem())+"-"
+String.valueOf(Spinner_011.getSelectedItem())+" "
+String.valueOf(Spinner_012.getSelectedItem())+":"
+String.valueOf(EditText_001.getText())+":"
+String.valueOf(EditText_002.getText());
s2=String.valueOf(EditText02.getText());
}
}
}
}
class myThread implements Runnable {
public void run() {
while (true) {//�߳�1��˯��һ��ѭ��������Ϣ
Message message = new Message();
message.what = 1;
mHandler.sendMessage(message);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
public void updateTitle() {
d1 = new Date();//��ȡ��ǰʱ��ת����ʽ
time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(d1);
TextView01.setText(time);//��ʾ��ǰʱ�������
if(b1==true){//û��������ʱ�����ʾ
EditText01.setText("ͬѧ����������");
b1=false;
}
else{
if(CheckBox01.isChecked()){
Set<String> set = dd.keySet();
for (String s : set) {//����map��ȡʱ�����в�ͬ�IJ���
if (s.equals(time)) {
if (dd.get(s).equals("eat")) {
EditText01.setText("ͬѧ���"+dd.get(s)+"��Ŷ��");
}
if (dd.get(s).equals("xizao")) {
EditText01.setText("ͬѧ���"+dd.get(s)+"��Ŷ��");
}
if (dd.get(s).equals("sleep")) {
EditText01.setText("ͬѧ���"+dd.get(s)+"��Ŷ��");
}
}
}
}
else{
if (time.equals(s1)) { //����ʱ���IJ�����
EditText01.setText("ͬѧ���"+s2+"��Ŷ��");
}
}
}
}
}
简单的闹钟使用
还算好吧,我在项目中也是设置为一分钟扫描一次。因为不能让cpu睡眠,所以耗电那是肯定的,这也没办法,那是现在的电池技术发展落后的原因。
嘛,更正一点,原生的Android系统应该是没有Alarm这个类的(起码2.2版本的没有,之后的有没有我就不知道了)。DrSmart说的Alarm类其实在AlarmClock项目中(2.3以后项目名改为DeskClock),就是闹钟的那个项目。
从AlarmClock项目中抽取Alarm和Alarms两个类可以让你自由的操作闹钟,你可以随意的添加,删除,修改闹钟,嘛的确能够实现正点报时的功能,不过那样界面就和闹钟一样了。
为了区别开的话,你最好自己实现。使用android.app.AlarmManager这个类你可是比较轻松的实现这个整点报时的功能,利用AlarmManager.setRepeating可以设置一个间隔为1小时的重复闹钟,你就不需要去扫描系统时间了。
实现一个receiver来接收AlarmManager发出的广播,然后准备一个activity(用于在界面上提醒),或者准备一个service(用户播放报时的音乐),当然最好是activity和service都写啦,这样你就可以获得AlarmClock一样效果。
建议你看一下AlarmClock的源码,看懂这份源码以后,你会觉得整点报时的功能很简单。