首页 > 其他 > 详细

团队冲刺第九天

时间:2020-04-24 00:46:37      阅读:89      评论:0      收藏:0      [点我收藏+]

1、今天自己做的是建立了数据库。准备将产生的数据存放到数据库之中。

主要的数据库代码人如下:

package com.example.dingwei2.DBOpenMessageUser;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import androidx.annotation.Nullable;

import com.example.dingwei2.bean.location;

public class DBOpenMessageUserlocation extends SQLiteOpenHelper
{
    final String db_location="create table db_location (_id integer primary key autoincrement,username varchar,date varchar,points varchar,distance integer,time varchar,energy integer,speed integer)";
    public DBOpenMessageUserlocation(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, null, version);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(db_location);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.i("数据","更新"+"oldVerSion"+"-->"+newVersion);
    }

    /**
    *数据库的相关操作
    * **/
    //增加信息
    public void insertlocation(SQLiteDatabase sqLiteDatabase, location location) {
        ContentValues cv = new ContentValues();
        cv.put("username", location.username);
        cv.put("date", location.date);
        cv.put("points", location.points);
        cv.put("time", location.time);
        cv.put("distance", location.distance);
        cv.put("energy", location.energy);
        cv.put("speed", location.speed);
        sqLiteDatabase.insert(db_location, null, cv);
    }
//删除信息
    public void deletebyid(Integer id)
    {
        SQLiteDatabase database = getWritableDatabase();
        database.execSQL("delete from db_location where id=?", new String[]{String.valueOf(id)});
    }
    //查找
       // database.execSQL("delete from db_location where  date=? and username=?", new String[]{date,username});

    public Cursor getAllLocation(String username) {
        SQLiteDatabase database = getWritableDatabase();
        return database.query("db_wen", null, "username=?",new String[]{username},null, null,"distance desc" );//"userdata desc"
    }


//    public void updatauser(String username,String usercheck)
//    {
//        SQLiteDatabase database = getWritableDatabase();
//        ContentValues values=new ContentValues();
//        values.put("usercheck",usercheck);
//        database.update("db_wen",values,"username=?",new String[]{username});
//    }
//    public void updatauserpicture(String username,String userpicture)
//    {
//        SQLiteDatabase database = getWritableDatabase();
//        ContentValues values=new ContentValues();
//        values.put("userpicture",userpicture);
//        database.update("db_wen",values,"username=?",new String[]{username});
//    }
//    public void updatapassword(String username,String password)
//    {
//        SQLiteDatabase database = getWritableDatabase();
//        ContentValues values=new ContentValues();
//        values.put("password",password);
//        database.update("db_wen",values,"username=?",new String[]{username});
//    }
}

2、今天完成了整个闹钟功能的实现,但是整体来说还有几个细节性的问题,比如长按删除闹钟会弹出两次提示框,还有就是当退出APP再进入时,所有的闹钟都变成了关闭状态,估计是哪里的细节出现了问题,但是总的来说今天还是挺有成就的。明天的工作就只剩解决这两个问题了。下面是主要代码以及运行效果图。

package com.alarm;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AlertDialog;

import com.example.keeprunning1.R;

import java.util.Calendar;
import java.util.List;

import static android.content.Context.ALARM_SERVICE;


public class AlarmAdapter extends BaseAdapter {
    private List<Alarm> mlist;
    private Context mContext;
    private LayoutInflater mlayoutInflater;
    private AlarmOperator malarmOperator;;
    Calendar calendar ;
    public AlarmAdapter(Context context,List<Alarm> list){
        mContext=context;
        mlist=list;
        mlayoutInflater=LayoutInflater.from(context);
        malarmOperator=new AlarmOperator(context);
    }
    public void refresh(List<Alarm> list){
        mlist=list;
        notifyDataSetChanged();
    }
    @Override
    public void notifyDataSetChanged() {
        super.notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        return mlist.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder viewHolder;
        if(convertView==null){
            viewHolder=new ViewHolder();
            convertView=mlayoutInflater.inflate(R.layout.alarmitem,null);
            viewHolder.mHour=convertView.findViewById(R.id.hour);
            viewHolder.mMinute=convertView.findViewById(R.id.minute);
            viewHolder.mContent=convertView.findViewById(R.id.content_item);
            viewHolder.mClockType=convertView.findViewById(R.id.switch_control);
            viewHolder.todetail=convertView.findViewById(R.id.todetail);
            convertView.setTag(viewHolder);
        }else{
            viewHolder=(ViewHolder)convertView.getTag();
        }

        final Alarm bean=mlist.get(position);
        final String name=bean.getUsername();
        final String hour=bean.getHour();
        final String minute=bean.getMinute();
        Log.i("name", name);
        viewHolder.mClockType.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked) {
                    malarmOperator.updateswitch(name,hour,minute);
                    viewHolder.mClockType.setChecked(true);
                    Toast.makeText(mContext, "开启闹钟", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(mContext, CallAlarm.class);
                    PendingIntent sender = PendingIntent.getBroadcast(
                            mContext, 0, intent, 0);
                    AlarmManager am;
                    //使用闹钟服务
                    am = (AlarmManager) mContext.getSystemService(ALARM_SERVICE);
                    calendar = Calendar.getInstance();
                    calendar.setTimeInMillis(System.currentTimeMillis());
                   // calendar.setTimeInMillis(System.currentTimeMillis());
                    calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(bean.getHour()));
                    calendar.set(Calendar.MINUTE, Integer.parseInt(bean.getMinute()));
                    calendar.set(Calendar.SECOND, 0);
                    calendar.set(Calendar.MILLISECOND, 0);
                    Log.e("TAG",calendar.getTimeInMillis()+"");
                    Log.e("TAG",System.currentTimeMillis()+"");
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                        if (System.currentTimeMillis()>calendar.getTimeInMillis()+40000){
                            //加24小时
                            am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis()+86400000, sender);
                        }else {
                            am.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
                        }
                    }
 //                   calendar = Calendar.getInstance();
//                    int mhour = calendar.get(Calendar.HOUR_OF_DAY);
//                    int mminute = calendar.get(Calendar.MINUTE);
//                    Log.d("Hour", String.valueOf(mhour));
//                    Log.d("Minute", String.valueOf(mminute));
//                    final MediaPlayer mMediaPlayer;
//                    if(bean.getHour().equals(mhour)&&bean.getMinute().equals(mminute)){
//                        mMediaPlayer= MediaPlayer.create(mContext, R.raw.alarmmusic);
//                        mMediaPlayer.start();
//                        new AlertDialog.Builder(mContext)
//                                .setIcon(R.drawable.clock)
//                                .setTitle("闹钟响了")
//                                .setCancelable(false)
//                                .setMessage("时间到了!")
//                                .setPositiveButton("关掉"
//                                        , new DialogInterface.OnClickListener() {
//                                            @Override
//                                            public void onClick(DialogInterface dialog, int which) {
//                                                mMediaPlayer.stop();
//                                            }
//                                        }).show();
//                    }
                }else if(!isChecked){
                    malarmOperator.updateswitch1(name,hour,minute);
                    viewHolder.mClockType.setChecked(false);
                    Intent intent = new Intent(mContext, CallAlarm.class);
                    PendingIntent sender=PendingIntent.getBroadcast(
                            mContext,0, intent, 0);
                    AlarmManager am;
                    am =(AlarmManager)mContext.getSystemService(ALARM_SERVICE);
                    am.cancel(sender);
                    Toast.makeText(mContext, "关闭闹钟", Toast.LENGTH_SHORT).show();

                }
            }
        });
        viewHolder.todetail.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                AlertDialog.Builder builder=new AlertDialog.Builder(mContext);
                builder.setMessage("确定删除?");
                builder.setTitle("提示");
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        malarmOperator.deletebyuser(name,hour,minute);
                        refresh(mlist);
                        Toast.makeText(mContext, "删除成功", Toast.LENGTH_SHORT).show();
                    }
                });
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                builder.create().show();
                return false;
            }
        });
//        int clockType=bean.getClockType();
//        Log.d("volley", String.valueOf(clockType));
//        if(clockType==1){
//            viewHolder.mClockType.setChecked(true);
//        }
//        if(clockType==0){
//            viewHolder.mClockType.setChecked(true);
//        }
        viewHolder.mContent.setText(bean.content);
        viewHolder.mHour.setText(bean.hour);
        viewHolder.mMinute.setText(bean.minute);
        return convertView;
    }
    public class ViewHolder{
        public TextView mHour;
        public TextView mMinute;
        public TextView mContent;
        public Switch mClockType;
        LinearLayout todetail;
        //public CheckBox mCheckBox;
    }
}

技术分享图片

 3.昨天的问题解决了,新建了一个文件,就不知为什么不闪退了,今天日历出来了,并且想把签到的信息存放到数据库中,今天完成了部分数据库创建的代码,明天希望可以有很大的突破,相关代码如下:

package com.example.rili;

import android.text.style.TtsSpan;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;

public class DateUtil {

    private static final String TAG = "DateUtil--->>>";

    public static int year;
    public static int month;
    public static int day;
    public static String current;

    static{
        Calendar a=Calendar.getInstance();
        year=a.get(Calendar.YEAR);
        month=a.get(Calendar.MONTH)+1;
        day=a.get(Calendar.DAY_OF_MONTH);
        current=getDate(new Date(),"YYY-MM-dd");
    }

    public static String getDate(Date source,String style) {
        SimpleDateFormat mdhm = new SimpleDateFormat(style, Locale.getDefault());//年 月 日
        return mdhm.format(source);
    }

    public static Date getDate(int y,int m,int d) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(y,m-1,d); //月减一
        return calendar.getTime();
    }

    public static String getDate(Date source) {
        SimpleDateFormat mdhm = new SimpleDateFormat("YYYY-MM-dd",Locale.getDefault());//年 月 日
        return mdhm.format(source);
    }

    public static int getCurrentMonthLastDay(int year,int month) {
        Calendar a = Calendar.getInstance();
        a.set(year,month-1,1);//把日期设置为当月第一天 月减一
        a.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天
        return a.get(Calendar.DATE);
    }

    public static int getFirstDayOfMonth(int year,int month){
        Calendar a = Calendar.getInstance();
        a.set(year,month-1,1); //月要减一
        a.set(Calendar.DAY_OF_MONTH,1);//设为第一天
        return a.get(Calendar.DAY_OF_WEEK);
    }

    // 字符串类型日期转化成date类型

    public static Date strToDate(String style, String date) {
        SimpleDateFormat formatter = new SimpleDateFormat(style,Locale.getDefault());
        try {
            return formatter.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
            return new Date();
        }
    }

    public static String calendarToDateTime(Calendar calendar, String style) {
        Date time = calendar.getTime();
        return getDate(time,style);
    }



    public static int[] getymd(String formatDateString) {
        int[] ymd = new int[3];
        ymd[0] = Integer.parseInt(formatDateString.substring(0, 4));
        ymd[1] = Integer.parseInt(formatDateString.substring(formatDateString.indexOf("-") + 1, formatDateString.lastIndexOf("-")));
        ymd[2] = Integer.parseInt(formatDateString.substring(formatDateString.lastIndexOf("-") + 1, formatDateString.length()));
        return ymd;

    }





    public static List<Boolean> dateConvert(int year, int month, List<String> source, List<Boolean> record, int dif) {
        for (String s : source) {
            int[] ymd = getymd(s);
            if (year == ymd[0] && month == ymd[1]) {//年月相同
                record.set(ymd[2] + dif, true);
          }
        }
        return record;
    }


}
package com.example.rili.sign;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class LocalDbOpenHelper extends SQLiteOpenHelper {

    //根据用户id创建数据库,假设为5
    private final static int UID=5;
    private final static String TABLE_SIGN_IN="signIn";//表名
    private final static String COLUMN_NAME_DATE="date";//日期列名

    private static final String SQL_CREATE_SIGN="CREATE TABLE " +
            TABLE_SIGN_IN + " (" + COLUMN_NAME_DATE + " VARCHAR(30) " + ")";

    private static final String SQL_DELETE_SIGN_IN = "DROP TABLE IF EXISTS " + TABLE_SIGN_IN;

    public static final int DATABASE_VERSION = 1;         //数据库版本号
    public static final String DATABASE_NAME = "local_"+UID+".db"; //数据库名字




    public LocalDbOpenHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_SIGN);//创建签到表
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(SQL_DELETE_SIGN_IN);//删除旧表
        onCreate(db);//新建版本表
    }

    public void dropTable(){
        SQLiteDatabase db=getReadableDatabase();
        db.execSQL(SQL_CREATE_SIGN);//删除旧表
        onCreate(db);//新建版本表
    }
}
package com.example.rili.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.example.rili.DateAdapter;
import com.example.rili.DateUtil;
import com.example.rili.R;

//签到控件

public class SignView extends LinearLayout {

    private TextView tvYear;
    private SignGridView gvDate;
    private DateAdapter adapterDate;

    public SignView(Context context) {
        super(context);
        init();
    }

    public SignView(Context context,AttributeSet attrs){
        super(context,attrs);
        init();
    }
    public SignView(Context context, AttributeSet attrs,int defStyleAttr){
        super(context,attrs,defStyleAttr);
        init();
    }

    public void init(){
        init(DateUtil.year,DateUtil.month);
    }

    public void init(int year,int month){
        View view=View.inflate(getContext(), R.layout.layout_signdate,this);
        tvYear=view.findViewById(R.id.tvYear);
        gvDate=view.findViewById(R.id.gvDate);
        tvYear.setText(year+"-"+month);
        adapterDate=new DateAdapter(getContext(),year,month);
        gvDate.setAdapter(adapterDate);
    }

    public void signIn(DateAdapter.OnSignListener onSignListener){
        adapterDate.signIn(onSignListener);
    }

    public boolean isSign(){
        return adapterDate.isSign();
    }
}

 

运行截图:

技术分享图片技术分享图片

 

团队冲刺第九天

原文:https://www.cnblogs.com/yumazemadui/p/12763688.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!