想写个整点报时的小程序。

a12321321321312321 2011-01-19 05:26:45
大家给点思路。3Q
...全文
3250 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
a220315410 2011-01-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 drsmart 的回复:]
引用 10 楼 f800051235 的回复:
引用 1 楼 tqwboy 的回复:
使用service在后台不断扫描系统时间,扫描到整点的就启动铃声播放,注意改变电源管理模式,不要让cpu睡眠

我设置一分钟扫描一次,是不是很费电?



楼上的回复没有一个沾边的,android有Alarm这个类,处理闹铃的到时候会自动执行你的程序的。
[/Quote]

嘛,更正一点,原生的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的源码,看懂这份源码以后,你会觉得整点报时的功能很简单。
DrSmart 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 f800051235 的回复:]
引用 1 楼 tqwboy 的回复:
使用service在后台不断扫描系统时间,扫描到整点的就启动铃声播放,注意改变电源管理模式,不要让cpu睡眠

我设置一分钟扫描一次,是不是很费电?
[/Quote]


楼上的回复没有一个沾边的,android有Alarm这个类,处理闹铃的到时候会自动执行你的程序的。
sharplover 2011-01-21
  • 打赏
  • 举报
回复
使用service 来做。
tqwboy 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 f800051235 的回复:]

引用 1 楼 tqwboy 的回复:
使用service在后台不断扫描系统时间,扫描到整点的就启动铃声播放,注意改变电源管理模式,不要让cpu睡眠

我设置一分钟扫描一次,是不是很费电?
[/Quote]

还算好吧,我在项目中也是设置为一分钟扫描一次。因为不能让cpu睡眠,所以耗电那是肯定的,这也没办法,那是现在的电池技术发展落后的原因。
a12321321321312321 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tqwboy 的回复:]
使用service在后台不断扫描系统时间,扫描到整点的就启动铃声播放,注意改变电源管理模式,不要让cpu睡眠
[/Quote]
我设置一分钟扫描一次,是不是很费电?
ameyume 2011-01-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tqwboy 的回复:]
使用service在后台不断扫描系统时间,扫描到整点的就启动铃声播放,注意改变电源管理模式,不要让cpu睡眠
[/Quote]
学习,想到了前面的取得系统时间,没想到后面的不让cpu睡眠。
a12321321321312321 2011-01-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dinjay 的回复:]
http://zxandroid.javaeye.com/blog/419305
简单的闹钟使用
[/Quote]

谢谢我先看看。。
a12321321321312321 2011-01-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 peijiangping1989 的回复:]
这个是我写的希望对你有帮助。

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……
[/Quote]
能不能代码给我邮箱发份。。。谢谢。

fanlvlgh@gmail.com
dinjay 2011-01-20
  • 打赏
  • 举报
回复
小裴同学 2011-01-20
  • 打赏
  • 举报
回复
这个是我写的希望对你有帮助。

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+"��Ŷ��");
}
}
}
}
}
Crossgate_J 2011-01-20
  • 打赏
  • 举报
回复
共同学习进步
Sodino 2011-01-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dinjay 的回复:]

http://zxandroid.javaeye.com/blog/419305
简单的闹钟使用
[/Quote]


实用。
tqwboy 2011-01-19
  • 打赏
  • 举报
回复
使用service在后台不断扫描系统时间,扫描到整点的就启动铃声播放,注意改变电源管理模式,不要让cpu睡眠

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧