zoukankan      html  css  js  c++  java
  • 添加新闹钟到数据库中,从数据库取闹钟

    1、AlarmReceiver

    package com.holy.hook.alarmclock;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.database.Cursor;
    import android.media.MediaPlayer;
    import android.text.format.Time;
    
    public class AlarmReciever extends BroadcastReceiver {
        
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            DatabaseHelper dbHelper = new DatabaseHelper(context);
            Time currentTime = new Time();
            currentTime.setToNow();
            int day = currentTime.weekDay;
            String hour = "" + currentTime.hour;
            String minute = "" + currentTime.minute;
            Cursor myCursor = dbHelper.select();
            for (myCursor.moveToFirst();!myCursor.isAfterLast();myCursor.moveToNext()) {
                if ((myCursor.getInt(Constant.DBColumnName.COLUMN_REPEAT_START+day)==1)&&
                        (hour.equals(myCursor.getString(Constant.DBColumnName.COLUMN_HOUR)))&&
                        (minute.equals(myCursor.getString(Constant.DBColumnName.COLUMN_MINUTE)))) {
                    MediaPlayer mp = MediaPlayer.create(context, R.raw.ring);
                    mp.start();
                    break;
                }
            }
        }
    
    }

    2、DatabaseOPenHelper

    package com.holy.hook.alarmclock;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    
    public class DatabaseHelper extends SQLiteOpenHelper {
        private static final String DATABASE_NAME = "alarm_db";
        private static final String TABLE_NAME = "alarm_time";
        private static final int DATABASE_VERSION = 1;
        private static final String FIELD_ID = "_id";
        private String[] days = new String[]{"_monday", "_tuesday", "_wednesday", "_thursday", "_friday", "_saturday", "_sunday"};
        
        public DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
    
        public DatabaseHelper(Context context, String name, CursorFactory factory,
                int version) {
            super(context, name, factory, version);
            // TODO Auto-generated constructor stub
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            String sql = "Create table " + TABLE_NAME + "(" + 
                    FIELD_ID + " integer primary key autoincrement" +
                    ",_hour" + " text" + ",_minute" + " text";
            for (int i = 0; i < days.length; i++) {
                sql += (","+days[i]+" integer");
            }
            sql += ")";
            db.execSQL(sql);
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
            String sql=" DROP TABLE IF EXISTS "+TABLE_NAME;
            db.execSQL(sql);
            onCreate(db);
        }
        
        public Cursor select()
        {
            SQLiteDatabase db=this.getReadableDatabase();
            Cursor cursor=db.query(TABLE_NAME, null, null, null, null, null,  " _id desc");
            return cursor;
        }
        
        public Cursor selectById(int id) {
            SQLiteDatabase db=this.getReadableDatabase();
            Cursor cursor=db.query(TABLE_NAME, null, FIELD_ID+"=?", new String[]{""+id}, null, null,  " _id desc");
            return cursor;
        }
        
        public long insert(AlarmTime alarmTime)
        {
            SQLiteDatabase db=this.getWritableDatabase();
            ContentValues cv=new ContentValues(); 
            cv.put("_hour", alarmTime.getHour());
            cv.put("_minute", alarmTime.getMinute());
            for (int i = 0; i < alarmTime.getEnableDays().length; i++) {
                cv.put(days[i], alarmTime.getEnableDays()[i]);
            }
            long row=db.insert(TABLE_NAME, null, cv);
            return row;
        }
        
        public void delete(int id)
        {
            SQLiteDatabase db=this.getWritableDatabase();
            String where=FIELD_ID+"=?";
            String[] whereValue={Integer.toString(id)};
            db.delete(TABLE_NAME, where, whereValue);
        }
        
        public void update(int id,AlarmTime alarmTime)
        {
            SQLiteDatabase db=this.getWritableDatabase();
            String where=FIELD_ID+"=?";
            String[] whereValue={Integer.toString(id)};
            ContentValues cv=new ContentValues(); 
            cv.put("_hour", alarmTime.getHour());
            cv.put("_minute", alarmTime.getMinute());
            for (int i = 0; i < alarmTime.getEnableDays().length; i++) {
                cv.put(days[i], alarmTime.getEnableDays()[i]);
            }
            db.update(TABLE_NAME, cv, where, whereValue);
        }
        
        public AlarmTime getAlarmTime(Cursor cursor) {
            cursor.moveToFirst();
            AlarmTime alarmTime = new AlarmTime();
            alarmTime.set_id(cursor.getInt(Constant.DBColumnName.COLUMN_ID));
            alarmTime.setHour(cursor.getString(Constant.DBColumnName.COLUMN_HOUR));
            alarmTime.setMinute(cursor.getString(Constant.DBColumnName.COLUMN_MINUTE));
            int[] enableDays = new int[]{0, 0, 0, 0, 0, 0, 0};
            for (int i = 0; i < enableDays.length; i++) {
                enableDays[i]=cursor.getInt(Constant.DBColumnName.COLUMN_REPEAT_START + i);
            }
            alarmTime.setEnableDays(enableDays);
            return alarmTime;
        }
        
    }

    3、MainActivity

    package com.holy.hook.alarmclock;
    
    import java.util.ArrayList;
    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.database.Cursor;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    
    public class MainActivity extends Activity implements OnClickListener, OnItemClickListener  {
        DatabaseHelper dbHelper;
        Cursor myCursor;
        private String[] enableDaysName =new String[]{"周一", "周二", "周三", "周四", "周五", "周六", "周日"};
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            dbHelper = new DatabaseHelper(this);
            Button btnAddAlarm = (Button)findViewById(R.id.btnAddAlarm);
            btnAddAlarm.setOnClickListener(this);
            showList();
            bindAlarm();
        }
    
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
            case R.id.btnAddAlarm:
            {
                Intent editIntent = new Intent(this, EditActivity.class);
                startActivity(editIntent);
                break;
            }
            default:
            {
                break;
            }
            }
        }
        
        private List<Map<String, Object>> getData() {
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); 
            Map<String, Object> map = null;
            myCursor = dbHelper.select();
            for (myCursor.moveToFirst();!myCursor.isAfterLast();myCursor.moveToNext()) {
                map = new HashMap<String, Object>();
                String timeStr = myCursor.getString(Constant.DBColumnName.COLUMN_HOUR) + ":" +
                        myCursor.getString(Constant.DBColumnName.COLUMN_MINUTE);
                String repeatStr = "";
                for (int i = 0; i < enableDaysName.length; i++) {
                    if (myCursor.getInt(Constant.DBColumnName.COLUMN_REPEAT_START + i) == 1) {
                        if ("".equals(repeatStr)) {
                            repeatStr += enableDaysName[i];
                        } else {
                            repeatStr += (", "+enableDaysName[i]);
                        }
                    }
                }
                map.put("_id", myCursor.getInt(Constant.DBColumnName.COLUMN_ID)+"");
                map.put("time", timeStr);
                map.put("repeat", repeatStr);
                
                list.add(map);
            } 
            return list;
        }
    
        public void onItemClick(AdapterView<?> parent, View view,
                 int position, long id) {
            // TODO Auto-generated method stub
            ListView listView = (ListView)parent;
            HashMap<String, String> map = (HashMap<String, String>) listView.getItemAtPosition(position);
            Intent intent = new Intent(this, EditActivity.class);
            intent.putExtra("_id", Integer.parseInt(map.get("_id")));
            startActivity(intent);
        }
        @Override
        protected void onRestart() {
            // TODO Auto-generated method stub
            super.onRestart();
            showList();
            bindAlarm();
        }
        
        private void showList() {
            ListView lvAlarmTime = (ListView)findViewById(R.id.lvAlarmTime);
            SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.icon_text_view, 
                    new String[]{"_id", "time", "repeat"}, new int[]{R.id._id, R.id.timeValue, R.id.repeatValue});
            lvAlarmTime.setAdapter(adapter);
            lvAlarmTime.setOnItemClickListener(this);
        }
        
        private void bindAlarm() {
            AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
            Intent intent = new Intent(this, AlarmReciever.class);
            PendingIntent pIntent = PendingIntent.getService(this, 0, intent, 0);
            alarmManager.setRepeating(AlarmManager.RTC, 0, 60*1000, pIntent);
        }
    }

    EditActivity

    package com.holy.hook.alarmclock;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.text.format.Time;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.TimePicker;
    
    public class EditActivity extends Activity implements OnClickListener {
        private DatabaseHelper dbHelper;
        private Cursor cursor;
        private int alarmId;
        private AlarmTime alarmTime = new AlarmTime();
        private String[] enableDaysName =new String[]{"周一", "周二", "周三", "周四", "周五", "周六", "周日"};
        boolean[] flags=new boolean[]{false,false,false,false,false,false,false};
        private Button btnOK, btnDelete;
        private TextView tvTimeValue, tvRepeatValue;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.edit);
            
            LinearLayout timeEditRegion = (LinearLayout)findViewById(R.id.timeEdit);
            timeEditRegion.setOnClickListener(this);
            tvTimeValue = (TextView)findViewById(R.id.timeEditValue);
            LinearLayout repeatEditRegion = (LinearLayout)findViewById(R.id.repeatEdit);
            tvRepeatValue = (TextView)findViewById(R.id.repeatEditValue);
            repeatEditRegion.setOnClickListener(this);
            btnOK = (Button)findViewById(R.id.btnOK);
            btnOK.setOnClickListener(this);
            btnDelete = (Button)findViewById(R.id.btnDelete);
            btnDelete.setOnClickListener(this);
            
            dbHelper = new DatabaseHelper(this);
            
            Intent intent = getIntent();
            
            alarmId = intent.getIntExtra("_id", -1);
            if (alarmId == -1) {
                Time time = new Time();
                time.setToNow();
                alarmTime.setHour(""+time.hour);
                alarmTime.setMinute(""+time.minute);
                tvTimeValue.setText(time.hour+":"+time.minute);
                btnDelete.setEnabled(false);
            } else {
                cursor = dbHelper.selectById(alarmId);
                alarmTime = dbHelper.getAlarmTime(cursor);
                tvTimeValue.setText(alarmTime.getHour()+":"+alarmTime.getMinute());
                String enableDaysStr = "";
                for (int i = 0; i < alarmTime.getEnableDays().length; i++) {
                    if (alarmTime.getEnableDays()[i] == 1) {
                        if ("".equals(enableDaysStr)) {
                            enableDaysStr += enableDaysName[i];
                        } else {
                            enableDaysStr += (", "+enableDaysName[i]);
                        }
                    }
                }
                tvRepeatValue.setText(enableDaysStr);
                btnDelete.setEnabled(true);
            }
        }
    
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
            case R.id.timeEdit:
            {
                View view = getLayoutInflater().inflate(R.layout.alarm, null);
                final TimePicker timePicker = (TimePicker)view.findViewById(R.id.timePicker);
                timePicker.setIs24HourView(true);
                new AlertDialog.Builder(this).setTitle(R.string.title_alert_time).setView(view).
                        setPositiveButton(R.string.btn_alert_time_ok, new DialogInterface.OnClickListener() {
                            
                            public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                                String hourStr = String.valueOf(timePicker.getCurrentHour());
                                String minuteStr = String.valueOf(timePicker.getCurrentMinute());
                                alarmTime.setHour(hourStr);
                                alarmTime.setMinute(minuteStr);
                                String timeStr = hourStr + ":" + minuteStr;
                                tvTimeValue.setText(timeStr);
                            }
                        }).setNegativeButton(R.string.btn_alert_time_cancel, null).show();
                break;
            }
            case R.id.repeatEdit:
            {
                if (alarmId > -1) {
                    for (int i = 0; i < flags.length; i++) {
                        if (alarmTime.getEnableDays()[i] == 1) {
                            flags[i] = true;
                        }
                    }
                }
                new AlertDialog.Builder(this).setTitle(R.string.title_alert_repeate)
                .setMultiChoiceItems(R.array.week, flags, new DialogInterface.OnMultiChoiceClickListener() {
                    
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        // TODO Auto-generated method stub
                        flags[which] = isChecked;
                    }
                }).setPositiveButton(R.string.btn_alert_repeat_ok, new DialogInterface.OnClickListener() {
                    
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        String daysStr = "";
                        int[] enableDays = new int[]{0, 0, 0, 0, 0, 0, 0};
                        for (int i = 0; i < flags.length; i++) {
                            if (flags[i]) {
                                enableDays[i] = 1;
                                if ("".equals(daysStr)) {
                                    daysStr += enableDaysName[i];
                                } else {
                                    daysStr += (", "+enableDaysName[i]);
                                }
                            }
                        }
                        alarmTime.setEnableDays(enableDays);
                        tvRepeatValue.setText(daysStr);
                    }
                }).setNegativeButton(R.string.btn_alert_repeat_cancel, null).show();
                break;
            }
            case R.id.btnOK:
            {
                if (alarmId == -1) {
                    dbHelper.insert(alarmTime);
                } else {
                    dbHelper.update(alarmId, alarmTime);
                }
                finish();
                break;
            }
            case R.id.btnDelete:
            {
                dbHelper.delete(alarmId);
                finish();
                break;
            }
            default:
                break;
            }
        }
    }

    (在F:\java\clock\AlarmClock2\AlarmClock)

  • 相关阅读:
    2016Wireshark
    移动UI
    Javascript 严格模式详解
    [转]深入浅出JSONP解决ajax跨域问题
    savedev和save的区别
    jquery各版本区别
    Webpack学习笔记(一)
    Html5新特性
    chrome浏览器debug
    bootstrap笔记
  • 原文地址:https://www.cnblogs.com/ct732003684/p/2891861.html
Copyright © 2011-2022 走看看