• Android 小闹钟程序


           最近写了个闹钟的程序,看到SharedPreferences在一个程序中可以共享数据,SharedPreferences是一个轻量级的键值存储机制,只可以存储基本数据类型。我就拿来用用,没想到SharedPreferences太好了,真是轻量级的保存数据的好的工具,比sqlite好用多了!以后我又多了一种编程思想了,呵呵,所以现在分享给大家,特别注意这点:这个无法直接在多个程序间共享Preferences数据。程序关闭再打开时间仍然保留你上次设置的时间。这就是Preferences的作用!特别声明:想要源码的请在博客的留言版中留下邮箱。转载请标明出处:http://blog.csdn.net/wdaming1986/article/details/6705902

    大家也可以去csdn下载,下载地址:

    http://download.csdn.net/source/3536834  

          程序欢迎界面:                                       点击设置闹钟界面:

                                    

              点击闹钟设置中的设置后的界面:                       闹钟时间到了弹出dialog:

                              

                      设置重复想起闹钟后的界面:                            点击返回键弹出的提示:

                              

    下面请看代码:

    一、MainActivity中的代码:

     
    package com.cn.daming;  
      
    import java.util.Calendar;  
      
    import android.app.Activity;  
    import android.app.AlarmManager;  
    import android.app.AlertDialog;  
    import android.app.PendingIntent;  
    import android.app.TimePickerDialog;  
    import android.content.DialogInterface;  
    import android.content.Intent;  
    import android.content.SharedPreferences;  
    import android.os.Bundle;  
    import android.view.KeyEvent;  
    import android.view.LayoutInflater;  
    import android.view.MotionEvent;  
    import android.view.View;  
    import android.widget.Button;  
    import android.widget.EditText;  
    import android.widget.TextView;  
    import android.widget.TimePicker;  
    import android.widget.Toast;  
      
    public class MainActivity extends Activity {  
        TextView setTime1;  
        TextView setTime2;  
        TextView setTime3;  
        Button mButton1;  
        Button mButton2;  
        Button mButton3;  
        Button mButton4;  
        Button mButton5;  
        Button mButton6;  
          
        String time1String = null;  
        String time2String = null;  
        String time3String = null;  
        String defalutString = "目前无设置";  
          
        AlertDialog builder = null;  
        Calendar c=Calendar.getInstance();  
      
        @Override  
        public void onCreate(Bundle savedInstanceState)  
        {  
          super.onCreate(savedInstanceState);  
          setContentView(R.layout.main);  
                  
          //取得活动的Preferences对象  
          SharedPreferences settings = getPreferences(Activity.MODE_PRIVATE);  
          time1String = settings.getString("TIME1", defalutString);  
          time2String = settings.getString("TIME2", defalutString);  
          time3String = settings.getString("TIME3", defalutString);  
            
          InitButton1();  
          InitButton2();  
          InitButton3();  
          InitButton4();  
          InitButton5();  
          InitButton6();   
            
          setTime1.setText(time1String);  
          setTime3.setText(time2String);  
          setTime2.setText(time3String);  
        }  
          
        public void InitButton1()  
        {  
           setTime1=(TextView) findViewById(R.id.setTime1);  
           mButton1=(Button)findViewById(R.id.mButton1);  
           mButton1.setOnClickListener(new View.OnClickListener()  
           {  
             public void onClick(View v)  
             {  
               c.setTimeInMillis(System.currentTimeMillis());  
               int mHour=c.get(Calendar.HOUR_OF_DAY);  
               int mMinute=c.get(Calendar.MINUTE);  
                 
                
               new TimePickerDialog(MainActivity.this,  
                 new TimePickerDialog.OnTimeSetListener()  
                 {                  
                   public void onTimeSet(TimePicker view,int hourOfDay,  
                                         int minute)  
                   {  
                     c.setTimeInMillis(System.currentTimeMillis());  
                     c.set(Calendar.HOUR_OF_DAY,hourOfDay);  
                     c.set(Calendar.MINUTE,minute);  
                     c.set(Calendar.SECOND,0);  
                     c.set(Calendar.MILLISECOND,0);  
                       
                     Intent intent = new Intent(MainActivity.this, CallAlarm.class);  
                     PendingIntent sender=PendingIntent.getBroadcast(  
                       MainActivity.this,0, intent, 0);  
                     AlarmManager am;  
                     am = (AlarmManager)getSystemService(ALARM_SERVICE);  
                     am.set(AlarmManager.RTC_WAKEUP,  
                            c.getTimeInMillis(),  
                            sender  
                           );  
                     String tmpS=format(hourOfDay)+""+format(minute);  
                     setTime1.setText(tmpS);  
                       
                     //SharedPreferences保存数据,并提交  
                     SharedPreferences time1Share = getPreferences(0);  
                     SharedPreferences.Editor editor = time1Share.edit();  
                     editor.putString("TIME1", tmpS);  
                     editor.commit();  
                       
                     Toast.makeText(MainActivity.this,"设置大明闹钟时间为"+tmpS,  
                       Toast.LENGTH_SHORT)  
                       .show();  
                   }            
                 },mHour,mMinute,true).show();  
             }  
           });  
        }  
      
        public void InitButton2()  
        {  
           mButton2=(Button) findViewById(R.id.mButton2);  
           mButton2.setOnClickListener(new View.OnClickListener()  
           {  
             public void onClick(View v)  
             {  
               Intent intent = new Intent(MainActivity.this, CallAlarm.class);  
               PendingIntent sender=PendingIntent.getBroadcast(  
                 MainActivity.this,0, intent, 0);  
               AlarmManager am;  
               am =(AlarmManager)getSystemService(ALARM_SERVICE);  
               am.cancel(sender);  
               Toast.makeText(MainActivity.this,"大明闹钟时间删除",  
                              Toast.LENGTH_SHORT).show();  
               setTime1.setText("目前无设置");  
                 
               SharedPreferences time1Share = getPreferences(0);  
                  SharedPreferences.Editor editor = time1Share.edit();  
                  editor.putString("TIME1", "目前无设置");  
                  editor.commit();  
             }  
           });  
        }  
          
        public void InitButton3()  
        {  
           setTime3=(TextView) findViewById(R.id.setTime5);  
           mButton3=(Button)findViewById(R.id.mButton5);  
           mButton3.setOnClickListener(new View.OnClickListener()  
           {  
             public void onClick(View v)  
             {  
               c.setTimeInMillis(System.currentTimeMillis());  
               int mHour=c.get(Calendar.HOUR_OF_DAY);  
               int mMinute=c.get(Calendar.MINUTE);  
                 
                
               new TimePickerDialog(MainActivity.this,  
                 new TimePickerDialog.OnTimeSetListener()  
                 {                  
                   public void onTimeSet(TimePicker view,int hourOfDay,  
                                         int minute)  
                   {  
                     c.setTimeInMillis(System.currentTimeMillis());  
                     c.set(Calendar.HOUR_OF_DAY,hourOfDay);  
                     c.set(Calendar.MINUTE,minute);  
                     c.set(Calendar.SECOND,0);  
                     c.set(Calendar.MILLISECOND,0);  
                       
                     Intent intent = new Intent(MainActivity.this, CallAlarm.class);  
                     PendingIntent sender=PendingIntent.getBroadcast(  
                       MainActivity.this,1, intent, 0);  
                     AlarmManager am;  
                     am = (AlarmManager)getSystemService(ALARM_SERVICE);  
                     am.set(AlarmManager.RTC_WAKEUP,  
                            c.getTimeInMillis(),  
                            sender  
                           );  
                     String tmpS=format(hourOfDay)+""+format(minute);  
                     setTime3.setText(tmpS);  
                       
                     //SharedPreferences保存数据,并提交  
                     SharedPreferences time2Share = getPreferences(1);  
                     SharedPreferences.Editor editor = time2Share.edit();  
                     editor.putString("TIME2", tmpS);  
                     editor.commit();  
                       
                     Toast.makeText(MainActivity.this,"设置大明闹钟时间为"+tmpS,  
                       Toast.LENGTH_SHORT)  
                       .show();  
                   }            
                 },mHour,mMinute,true).show();  
             }  
           });  
        }  
          
        public void InitButton4()  
        {  
           mButton4=(Button) findViewById(R.id.mButton6);  
           mButton4.setOnClickListener(new View.OnClickListener()  
           {  
             public void onClick(View v)  
             {  
               Intent intent = new Intent(MainActivity.this, CallAlarm.class);  
               PendingIntent sender=PendingIntent.getBroadcast(  
                 MainActivity.this,0, intent, 0);  
               AlarmManager am;  
               am =(AlarmManager)getSystemService(ALARM_SERVICE);  
               am.cancel(sender);  
               Toast.makeText(MainActivity.this,"大明闹钟时间删除",  
                              Toast.LENGTH_SHORT).show();  
               setTime3.setText("目前无设置");  
                 
               //SharedPreferences保存数据,并提交  
                  SharedPreferences time2Share = getPreferences(1);  
                  SharedPreferences.Editor editor = time2Share.edit();  
                  editor.putString("TIME2", "目前无设置");  
                  editor.commit();  
             }  
           });  
        }  
          
        public void InitButton5()  
        {  
           setTime2=(TextView) findViewById(R.id.setTime2);  
           LayoutInflater factory = LayoutInflater.from(this);  
           final View setView = factory.inflate(R.layout.timeset,null);  
           final TimePicker tPicker=(TimePicker)setView  
                                      .findViewById(R.id.tPicker);  
           tPicker.setIs24HourView(true);  
      
           final AlertDialog di=new AlertDialog.Builder(MainActivity.this)  
                 .setIcon(R.drawable.clock)  
                 .setTitle("设置")  
                 .setView(setView)  
                 .setPositiveButton("确定",  
                   new DialogInterface.OnClickListener()  
                  {  
                    public void onClick(DialogInterface dialog, int which)  
                    {  
                      EditText ed=(EditText)setView.findViewById(R.id.mEdit);  
                      int times=Integer.parseInt(ed.getText().toString())  
                                 *1000;  
                      c.setTimeInMillis(System.currentTimeMillis());  
                      c.set(Calendar.HOUR_OF_DAY,tPicker.getCurrentHour());  
                      c.set(Calendar.MINUTE,tPicker.getCurrentMinute());  
                      c.set(Calendar.SECOND,0);  
                      c.set(Calendar.MILLISECOND,0);  
      
                      Intent intent = new Intent(MainActivity.this,  
                                                 CallAlarm.class);  
                      PendingIntent sender = PendingIntent.getBroadcast(  
                        MainActivity.this,1, intent, 0);  
                      AlarmManager am;  
                      am = (AlarmManager)getSystemService(ALARM_SERVICE);  
                      am.setRepeating(AlarmManager.RTC_WAKEUP,  
                                c.getTimeInMillis(),times,sender);  
                      String tmpS=format(tPicker.getCurrentHour())+""+  
                                  format(tPicker.getCurrentMinute());  
                      String subStr = "设置大明闹钟时间为"+tmpS+  
                               "开始,重复间隔为"+times/1000+"";  
                      setTime2.setText("设置大明闹钟时间为"+tmpS+  
                                       "开始,重复间隔为"+times/1000+"");  
                        
                      //SharedPreferences保存数据,并提交    
                      SharedPreferences time3Share = getPreferences(2);  
                   SharedPreferences.Editor editor = time3Share.edit();  
                   editor.putString("TIME3", subStr);  
                   editor.commit();  
                        
                      Toast.makeText(MainActivity.this,"设置大明闹钟为"+tmpS+  
                                     "开始,重复间隔为"+times/1000+"",  
                                     Toast.LENGTH_SHORT).show();  
                    }  
                  })  
                 .setNegativeButton("取消",  
                   new DialogInterface.OnClickListener()  
                  {  
                    public void onClick(DialogInterface dialog, int which)  
                    {  
                    }  
                  }).create();  
      
           mButton5=(Button) findViewById(R.id.mButton3);  
           mButton5.setOnClickListener(new View.OnClickListener()  
           {  
             public void onClick(View v)  
             {  
               c.setTimeInMillis(System.currentTimeMillis());  
               tPicker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY));  
               tPicker.setCurrentMinute(c.get(Calendar.MINUTE));  
               di.show();  
             }  
           });  
        }  
          
        public void InitButton6()  
        {  
           mButton6=(Button) findViewById(R.id.mButton4);  
           mButton6.setOnClickListener(new View.OnClickListener()  
           {  
             public void onClick(View v)  
             {  
               Intent intent = new Intent(MainActivity.this, CallAlarm.class);  
               PendingIntent sender = PendingIntent.getBroadcast(  
                 MainActivity.this,1, intent, 0);  
               AlarmManager am;  
               am = (AlarmManager)getSystemService(ALARM_SERVICE);  
               am.cancel(sender);  
               Toast.makeText(MainActivity.this,"闹钟时间删除",  
                              Toast.LENGTH_SHORT).show();  
               setTime2.setText("目前无设置");  
               //SharedPreferences保存数据,并提交    
                  SharedPreferences time3Share = getPreferences(2);  
               SharedPreferences.Editor editor = time3Share.edit();  
               editor.putString("TIME3", "目前无设置");  
               editor.commit();  
             }  
           });  
        }  
              
      @Override  
      public boolean onKeyUp(int keyCode, KeyEvent event) {  
         
                if(keyCode == KeyEvent.KEYCODE_BACK){  
       builder = new AlertDialog.Builder(MainActivity.this)  
         .setIcon(R.drawable.clock)  
         .setTitle("温馨提示:")  
         .setMessage("您是否要退出大明闹钟程序!!!")  
         .setPositiveButton("确定",  
           new DialogInterface.OnClickListener() {  
            public void onClick(DialogInterface dialog,  
              int whichButton) {  
             MainActivity.this.finish();  
            }  
           })  
         .setNegativeButton("取消",  
           new DialogInterface.OnClickListener() {  
            public void onClick(DialogInterface dialog,  
              int whichButton) {  
             builder.dismiss();  
            }  
           }).show();  
                }  
                return true;  
      }  
      
      private String format(int x)  
        {  
          String s=""+x;  
          if(s.length()==1) s="0"+s;  
          return s;  
        }  
    }  

    二、CallAlarm中的代码:

    package com.cn.daming;  
      
    import android.content.Context;  
    import android.content.Intent;  
    import android.content.BroadcastReceiver;  
    import android.os.Bundle;  
      
    public class CallAlarm extends BroadcastReceiver  
    {  
      @Override  
      public void onReceive(Context context, Intent intent)  
      {  
        Intent i = new Intent(context, AlarmAlert.class);  
              
        Bundle bundleRet = new Bundle();  
        bundleRet.putString("STR_CALLER", "");  
        i.putExtras(bundleRet);  
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
        context.startActivity(i);  
      }  
    }  

    三、AlarmAlert中的代码:

    package com.cn.daming;  
      
    import android.app.Activity;  
    import android.app.AlertDialog;  
    import android.content.DialogInterface;  
    import android.os.Bundle;  
      
    public class AlarmAlert extends Activity  
    {  
      @Override  
      protected void onCreate(Bundle savedInstanceState)   
      {  
        super.onCreate(savedInstanceState);  
        new AlertDialog.Builder(AlarmAlert.this)  
            .setIcon(R.drawable.clock)  
            .setTitle("大明闹钟响了!!")  
            .setMessage("快完成你制定的计划吧!!!")  
            .setPositiveButton("关掉它",  
             new DialogInterface.OnClickListener()  
            {  
              public void onClick(DialogInterface dialog, int whichButton)  
              {  
                AlarmAlert.this.finish();  
              }  
            })  
            .show();  
      }   
    }  

    四、main.xml布局文件的代码:

    <?xml version="1.0" encoding="utf-8"?>  
    <AbsoluteLayout  
      xmlns:android="http://schemas.android.com/apk/res/android"  
      android:id="@+id/layout1"  
      android:layout_width="fill_parent"  
      android:layout_height="fill_parent"  
      android:background="@drawable/other"  
    >  
      <DigitalClock  
        android:id="@+id/dClock"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:textSize="40sp"  
        android:textColor="@drawable/blue"  
        android:layout_x="70px"  
        android:layout_y="32px"  
      >  
      </DigitalClock>  
       <TextView  
         android:id="@+id/text1"  
         android:layout_width="wrap_content"  
         android:layout_height="wrap_content"  
         android:text="@string/str_title3"  
         android:textSize="20sp"  
         android:textColor="@drawable/black"  
         android:layout_x="10px"  
         android:layout_y="104px"  
       >  
       </TextView>  
       <Button  
         android:id="@+id/mButton1"  
         android:layout_width="wrap_content"  
         android:layout_height="40px"  
         android:text="@string/str_button1"  
         android:textColor="@drawable/black"  
         android:textSize="18sp"  
         android:layout_x="190px"  
         android:layout_y="102px"  
       >  
          </Button>  
            
         <TextView  
          android:id="@+id/setTime1"  
          android:layout_width="wrap_content"  
          android:layout_height="wrap_content"  
          android:text="@string/str_default"  
          android:textColor="@drawable/red"  
          android:textSize="16sp"  
          android:layout_x="10px"  
          android:layout_y="149px"  
       >  
       </TextView>  
       <Button  
          android:id="@+id/mButton2"  
          android:layout_width="wrap_content"  
          android:layout_height="40px"  
          android:text="@string/str_button2"  
          android:textColor="@drawable/black"  
          android:textSize="18sp"  
          android:layout_x="190px"  
          android:layout_y="142px"  
       >  
       </Button>  
         
       <TextView  
         android:id="@+id/text5"  
         android:layout_width="wrap_content"  
         android:layout_height="wrap_content"  
         android:text="@string/str_title4"  
         android:textSize="20sp"  
         android:textColor="@drawable/black"  
         android:layout_x="10px"  
         android:layout_y="216px"  
       >  
       </TextView>  
       <Button  
         android:id="@+id/mButton5"  
         android:layout_width="wrap_content"  
         android:layout_height="40px"  
         android:text="@string/str_button1"  
         android:textColor="@drawable/black"  
         android:textSize="18sp"  
         android:layout_x="190px"  
         android:layout_y="212px"  
       >  
          </Button>  
            
         <TextView  
          android:id="@+id/setTime5"  
          android:layout_width="wrap_content"  
          android:layout_height="wrap_content"  
          android:text="@string/str_default"  
          android:textColor="@drawable/red"  
          android:textSize="16sp"  
          android:layout_x="10px"  
          android:layout_y="259px"  
       >  
       </TextView>  
       <Button  
          android:id="@+id/mButton6"  
          android:layout_width="wrap_content"  
          android:layout_height="40px"  
          android:text="@string/str_button2"  
          android:textColor="@drawable/black"  
          android:textSize="18sp"  
          android:layout_x="190px"  
          android:layout_y="252px"  
       >  
       </Button>  
         
       <TextView  
          android:id="@+id/text2"  
          android:layout_width="wrap_content"  
          android:layout_height="wrap_content"  
          android:text="@string/str_title2"  
          android:textSize="20sp"  
          android:textColor="@drawable/black"  
          android:layout_x="10px"  
          android:layout_y="326px"  
       >  
       </TextView>  
       <Button  
          android:id="@+id/mButton3"  
          android:layout_width="wrap_content"  
          android:layout_height="40px"  
          android:text="@string/str_button1"  
          android:textColor="@drawable/black"  
          android:textSize="18sp"  
          android:layout_x="190px"  
          android:layout_y="322px"  
       >  
       </Button>  
         
       <TextView  
          android:id="@+id/setTime2"  
          android:layout_width="170px"  
          android:layout_height="wrap_content"  
          android:text="@string/str_default"  
          android:textColor="@drawable/red"  
          android:textSize="16sp"  
          android:layout_x="10px"  
          android:layout_y="369px"  
       >  
          </TextView>  
       <Button  
          android:id="@+id/mButton4"  
          android:layout_width="wrap_content"  
          android:layout_height="40px"  
          android:text="@string/str_button2"  
          android:textColor="@drawable/black"  
          android:textSize="18sp"  
          android:layout_x="190px"  
          android:layout_y="362px"  
       >  
       </Button>  
        
    </AbsoluteLayout>  

    五、timeset.xml布局文件中的代码:

    <?xml version="1.0" encoding="utf-8"?>  
    <AbsoluteLayout  
      android:id="@+id/layout2"  
      android:layout_width="fill_parent"  
      android:layout_height="fill_parent"  
      xmlns:android="http://schemas.android.com/apk/res/android"  
    >  
      <TextView  
        android:id="@+id/text1"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="@string/str_text1"  
        android:textColor="@drawable/white"  
        android:textSize="16sp"  
        android:layout_x="10px"  
        android:layout_y="32px"  
      >  
      </TextView>  
      <TextView  
        android:id="@+id/text2"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="@string/str_text2"  
        android:textColor="@drawable/white"  
        android:textSize="16sp"  
        android:layout_x="10px"  
        android:layout_y="172px"  
      >  
      </TextView>  
      <TimePicker  
        android:id="@+id/tPicker"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_x="100px"  
        android:layout_y="12px"  
      >  
      </TimePicker>  
      <EditText  
        android:id="@+id/mEdit"  
        android:layout_width="52px"  
        android:layout_height="40px"  
        android:text="15"  
        android:textSize="16sp"  
        android:layout_x="120px"  
        android:layout_y="162px"  
      >  
      </EditText>  
      <TextView  
        android:id="@+id/text3"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="@string/str_text3"  
        android:textColor="@drawable/white"  
        android:textSize="16sp"  
        android:layout_x="180px"  
        android:layout_y="172px"  
      >  
      </TextView>  
    </AbsoluteLayout>  

    六、string.xml中的代码:

    <?xml version="1.0" encoding="utf-8"?>  
    <resources>  
      <string name="hello">Hello World, EX06_10</string>  
      <string name="app_name">大明原创闹钟</string>  
      <string name="str_button1">设置闹钟</string>  
      <string name="str_button2">删除闹钟</string>  
      <string name="str_title2">重复响起的闹钟</string>  
      <string name="str_title3">大明闹钟一</string>  
      <string name="str_title4">大明闹钟二</string>  
      <string name="str_default">目前无设置</string>  
      <string name="str_text1">开始时间</string>  
      <string name="str_text2">重复响起的闹钟</string>  
      <string name="str_text3">秒</string>  
    </resources>  

    七:color.xml中的代码:

    <?xml version="1.0" encoding="utf-8"?>  
    <resources>  
      <drawable name="white">#FFFFFFFF</drawable>  
      <drawable name="other">#FF00FFF0</drawable>  
      <drawable name="black">#000000</drawable>  
      <drawable name="blue">#0000FF</drawable>  
      <drawable name="red">#FF0000</drawable>  
    </resources>

    八、AndroidManifest.xml中的代码

    <?xml version="1.0" encoding="utf-8"?>  
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
          package="com.cn.daming"  
          android:versionCode="1"  
          android:versionName="1.0">  
        <uses-sdk android:minSdkVersion="8" />  
      
        <application android:icon="@drawable/icon" android:label="@string/app_name">  
            <!-- 註冊receiver CallAlarm -->  
            <receiver android:name=".CallAlarm" android:process=":remote" />  
            <activity android:name=".MainActivity"  
                      android:label="@string/app_name">  
                <intent-filter>  
                    <action android:name="android.intent.action.MAIN" />  
                    <category android:name="android.intent.category.LAUNCHER" />  
                </intent-filter>  
            </activity>  
            <activity android:name=".AlarmAlert"  
                  android:label="@string/app_name">  
            </activity>  
        </application>  
    </manifest>  
  • 相关阅读:
    sql server 删除重复数据新思路
    sqlserver 迁移 mysql
    ASP.NET Web deployment task failed. 请与服务器管理员联系,检查授权和委派设置 部署任务失败的解决方案
    数据库交互之减少IO次数
    sqlserver 安全设置
    windows设置相对路径的快捷方式
    利用SignalR实现实时推送信息
    image magick 备忘
    dotnetCore开发中遇到的一些问题
    “NETSDK1061: 项目是使用 Microsoft.NETCore.App 版本 2.1.14 还原的, 但使用当前设置, 将改用版本 2.1.0。”的处理方法
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4460323.html
Copyright © 2020-2023  润新知