添加新闹钟到数据库中,从数据库取闹钟

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)

转载于:https://www.cnblogs.com/ct732003684/archive/2013/02/04/2891861.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值