Android项目之小闹钟代码

来源:互联网 发布:伊舜数码淘宝店怎么样 编辑:程序博客网 时间:2024/05/29 03:51

在上一篇的博文中,我们将我们的android小项目的简单的界面做了一下(简单的不能再简单的界面),下面就让我们看一下到底是怎么样一步一步的将这一个小项目实现的,废话不多说,直接上代码:

1.下面是主Activity

package android.dck.demo;import java.util.ArrayList;import java.util.Calendar;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.app.AlarmManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.TimePicker;import android.widget.TimePicker.OnTimeChangedListener;import android.widget.Toast;public class MyAlarmManagerDemo extends Activity {private AlarmManager alarm = null;// 闹钟管理private Button set = null;// 按钮组件private TextView msg = null;// 文本显示组件private Calendar calendar = Calendar.getInstance();// 取得Calendar对象private TimePicker time = null;// 时间选择器private int hourOfDay = 0;// 保存设置的时private int minute = 0;// 保存设置的分private ListView listview;//设置数据类型private List<String> listdata;private ArrayAdapter<String> adapter;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.main);init();//初始化数据源listdata=new ArrayList<String>();//初始化适配器adapter=new ArrayAdapter<String>(MyAlarmManagerDemo.this,android.R.layout.simple_expandable_list_item_1,listdata);/** * 等到我们刷新的时候我们在将适配器与listview绑定一次 */}//初始化方法public void init(){time = (TimePicker)findViewById(R.id.time); // 取得时间选择器set = (Button)findViewById(R.id.set); // 取得按钮组件msg = (TextView)findViewById(R.id.msg);// 取得组件listview=(ListView) findViewById(R.id.listView);set.setOnClickListener(new SetOnClickListenerImpl()); // 设置单击事件alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); // 取得闹钟服务time.setOnTimeChangedListener(new OnTimeChangedListenerImpl()); // 设置时间改变监听time.setIs24HourView(true); // 24小时制//通过给listview设置长按事件,从而我们来删除闹钟listview.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View view,int position, long id) {// TODO Auto-generated method stubint hour,minute;String result[]=listdata.get(position).trim().split(":");//将其转化为整数形式hour=Integer.parseInt(result[0]);minute=Integer.parseInt(result[1]);Intent intent=new Intent(MyAlarmManagerDemo.this,MyAlarmReceiver.class);intent.setAction("dck.cqq.com.android");PendingIntent pend=PendingIntent.getBroadcast(MyAlarmManagerDemo.this, hour+minute,intent,PendingIntent.FLAG_UPDATE_CURRENT);//下面我们将闹钟取消掉alarm.cancel(pend);listdata.remove(position);/** * 当我们适配器中的数据发生改变时,我们需要重新设置一下适配器,并通知数据发生改变 *///刷新适配器listview.setAdapter(adapter);//通知数据发生变化adapter.notifyDataSetChanged();Toast.makeText(MyAlarmManagerDemo.this, "闹钟删除成功!",Toast.LENGTH_SHORT).show();// 显示提示信息return false;}});}//监听器private class OnTimeChangedListenerImpl implements OnTimeChangedListener {@Overridepublic void onTimeChanged(TimePicker view, int hourOfDay, int minute) {//java.util.Calendar.setTimeInMillis(long) 方法从给定的long值设置日历的当前时间。MyAlarmManagerDemo.this.calendar.setTimeInMillis(System.currentTimeMillis());// 设置当前时间MyAlarmManagerDemo.this.calendar.set(Calendar.HOUR_OF_DAY,hourOfDay);// 设置小时MyAlarmManagerDemo.this.calendar.set(Calendar.MINUTE, minute);// 设置分钟MyAlarmManagerDemo.this.calendar.set(Calendar.SECOND, 0);// 设置秒MyAlarmManagerDemo.this.calendar.set(Calendar.MILLISECOND, 0);// 设置毫秒MyAlarmManagerDemo.this.hourOfDay = hourOfDay; // 保存设置的小时MyAlarmManagerDemo.this.minute = minute; // 保存设置的分钟}}private void saveData(int hour, int min) {// TODO Auto-generated method stubString result=hour+":"+min;listdata.add(result);/** * 等到我们刷新的时候我们在将适配器与listview绑定一次 */listview.setAdapter(adapter);//通知数据发生变化adapter.notifyDataSetChanged();}//监听设置按钮private class SetOnClickListenerImpl implements OnClickListener {@Overridepublic void onClick(View view) {Intent intent = new Intent(MyAlarmManagerDemo.this,MyAlarmReceiver.class); // 指定跳转的Intentintent.setAction("dck.cqq.com.android"); // 定义广播的ActionPendingIntent sender = PendingIntent.getBroadcast(MyAlarmManagerDemo.this,calendar.get(Calendar.HOUR_OF_DAY)+calendar.get(Calendar.MINUTE), intent,PendingIntent.FLAG_UPDATE_CURRENT);// 指定PendingIntent//Calendar.getTimeInMillis() 方法返回此Calendar以毫秒为单位的时间。//其实这个类就是获取当前的时间MyAlarmManagerDemo.this.alarm.set(AlarmManager.RTC_WAKEUP,MyAlarmManagerDemo.this.calendar.getTimeInMillis(), sender);// 设置闹钟//将数据存入到适配器中saveData(calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE));//设置闹钟MyAlarmManagerDemo.this.msg.setText("闹钟响起的时间是:"+ MyAlarmManagerDemo.this.hourOfDay + "时"+ MyAlarmManagerDemo.this.minute + "分。");// 提示文字Toast.makeText(MyAlarmManagerDemo.this, "闹钟设置成功!",Toast.LENGTH_SHORT).show();// 显示提示信息}}}

2.AlarmMessage

package android.dck.demo;import java.text.SimpleDateFormat;import java.util.Date;import android.app.Activity;import android.app.AlertDialog;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.DialogInterface;import android.content.Intent;import android.media.MediaPlayer;import android.os.Bundle;public class AlarmMessage extends Activity {private NotificationManager manager;private Notification notification;private MediaPlayer media;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//首先我们要获取服务manager=(NotificationManager) this.getSystemService(NOTIFICATION_SERVICE);//初始化一个通知notification=new Notification(R.drawable.messagedck,"要工作了",System.currentTimeMillis());Intent intent=new Intent(AlarmMessage.this,ShowMessActivity.class);PendingIntent in=PendingIntent.getActivity(AlarmMessage.this,0, intent,PendingIntent.FLAG_UPDATE_CURRENT);notification.setLatestEventInfo(AlarmMessage.this, "努力上班","为了老婆,再累也心甘情愿",in);notification.defaults=Notification.DEFAULT_ALL;manager.notify(1,notification);//然后播放音乐 media=MediaPlayer.create(this,R.raw.music); //设置循环播放 media.setLooping(true); //开始播放 media.start();//在这里我们利用了一个对话框机制new AlertDialog.Builder(this)// 建立对话框.setIcon(R.drawable.pic_m)// 设置图标.setTitle("闹钟时间已到!")// 设置对话框标题.setMessage(// 定义显示文字"闹钟响起,现在时间:"+ new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(new Date(System.currentTimeMillis()))).setPositiveButton("关闭", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {media.stop();//用完了一定压迫释放资源media.release();AlarmMessage.this.finish();// 关闭对话框后本程序结束}}).show();// 显示对话框//下面我们还要发送一个通知}}

3.广播接受者

ublic class MyAlarmReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Intent it = new Intent(context, AlarmMessage.class);// 定义要操作的Intentit.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// 传递一个新的任务标记//在这里用到了上下文对象context.startActivity(it);// 启动Intent}}
4.设置当通知被点击时要进入的界面

public class ShowMessActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.show);}}

最后,总结一下,开发这个项目用了一节课的时间,我觉得我们还是要把基础打好,我今天做这个小程序就是把以前零碎的只是做了一下总结,也想着作为一个学习的资料,帮助大家提高自己,还是那句话,我们要有自己的核心竞争力,现在的IT培训机构漫天飞舞,我们的行业也是鱼龙混珠,但是只要你是科班出身,你是干这一行,爱这一行的,要知道,你的本领就像酒一样,时间越久,你的价值越大,祝愿我们的大Android未来无限.

1 0
原创粉丝点击