精华内容
下载资源
问答
  • 一、闹铃功能介绍: 1、为每条备忘添加闹铃 2、备忘内容和闹铃信息存在SQL中 3、可删除每天记录和闹铃或者删除所有 4、到点闹铃启动,包括锁屏时和重开机 5、在桌面的创建一个widget类似便签那样的东西显示记录

    一、闹铃功能介绍:

    1、为每条备忘添加闹铃

    2、备忘内容和闹铃信息存在SQL中

    3、可删除每天记录和闹铃或者删除所有

    4、到点闹铃启动,包括锁屏时和重开机

    5、在桌面的创建一个widget类似便签那样的东西显示记录

    二、看下效果图:



    三、关于SQL部分不再细写,可查看Android应用开发一栏:

    添加闹铃和备忘:

    1、设置日期:

    dateBtn.setOnClickListener(new OnClickListener() {
    
    				@Override
    				public void onClick(View v) {
    					mCalendar = Calendar.getInstance();
    					// TODO Auto-generated method stub
    					new DatePickerDialog(EditTime.this,
    							new DatePickerDialog.OnDateSetListener() {
    								public void onDateSet(DatePicker view,
    										int year, int monthOfYear,
    										int dayOfMonth) {
    
    									mAlarmCalendar.set(Calendar.YEAR, year);
    									mAlarmCalendar.set(Calendar.MONTH,
    											monthOfYear);
    									mAlarmCalendar.set(Calendar.DAY_OF_MONTH,
    											dayOfMonth);
    									EditTime.this.year = year;
    									EditTime.this.month = monthOfYear;
    									EditTime.this.day = dayOfMonth;
    									dateBtn.setText(year + "年" + (month + 1)
    											+ "月" + day + "日");
    									System.out.println(year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日");
    								}
    							}, year, month, day).show();
    				}
    			});

    2、设置时间:

    timeBtn.setOnClickListener(new OnClickListener() {
    
    				@Override
    				public void onClick(View v) {
    					mCalendar = Calendar.getInstance();
    					new TimePickerDialog(EditTime.this,
    							new TimePickerDialog.OnTimeSetListener() {
    								public void onTimeSet(TimePicker view,
    										int hourOfDay, int minute) {
    									mAlarmCalendar.set(Calendar.HOUR_OF_DAY,
    											hourOfDay);
    									mAlarmCalendar.set(Calendar.MINUTE, minute);
    									mAlarmCalendar.set(Calendar.SECOND, 0);
    									mAlarmCalendar.set(Calendar.MILLISECOND, 0);
    									EditTime.this.hour = hourOfDay;
    									EditTime.this.minute = minute;
    									timeBtn.setText(hour + "时" + minute + "分");									
    									System.out.println(hourOfDay+"时"+minute+"分");
    								}
    							}, hour, minute, false).show();
    				}
    			});

    3、广播闹铃:

    setBtn.setOnClickListener(new OnClickListener() {
    
    				@Override
    				public void onClick(View v) {
    					// TODO Auto-generated method stub
    					//写进数据库
    					addData();
    					/* 获取闹钟管理的实例 */
    
    					mAlarm = (AlarmManager) getSystemService(Service.ALARM_SERVICE);
    					Intent intent = new Intent(EditTime.this,
    							AlarmReceiver.class);
    					PendingIntent pendingIntent = PendingIntent.getBroadcast(
    							EditTime.this, AlarmIndex, intent, 0);// 第二个参数为区别不同闹铃的唯一标识
    					/* 设置闹钟 */
    					mAlarm.set(AlarmManager.RTC_WAKEUP,
    							mAlarmCalendar.getTimeInMillis(), pendingIntent);
    					finish();
    				}
    			});

    4、广播接收BroadcastReceiver:

    public class AlarmReceiver extends BroadcastReceiver {
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		// TODO Auto-generated method stub		
    		Intent i = new Intent(context, Alarm.class);
    		i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//这一句很重要,不然会出错
    		context.startActivity(i);
    	}
    }

    记得注册:

    <receiver
                android:name=".AlarmReceiver"
                android:process=":remote" />

    5、重启之后重写闹铃,BootReceiver:

    public class BootReceiver extends BroadcastReceiver{
    		
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		// TODO Auto-generated method stub
    		String action = intent.getAction();
    		if(action.equals(Intent.ACTION_BOOT_COMPLETED)){
    			Intent i = new Intent(context, BootAlarm.class);
    			i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//这一句很重要,不然会出错
    			context.startActivity(i);
    		}
    	}
    }
    同样需要注册:

    <receiver android:name="BootReceiver" >
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED" />
                </intent-filter>
            </receiver>

    6、开始重写:

    dbHelper = new DatabaseHelper(BootAlarm.this, "idea.sql");
    		SQLiteDatabase db = dbHelper.getReadableDatabase();
    		Cursor cursor = db.query("user", null, null, null, null, null, null);
    		btAlarmCalendar = Calendar.getInstance();
    		
    			while (cursor.moveToNext()) {
    				btAlarmCalendar = Calendar.getInstance();
    				System.out.println("cursor.moveToNext()-->cursor.getInt(0)-->"
    						+ cursor.getInt(0));
    				time = cursor.getString(cursor.getColumnIndex("mtime"));
    				year = time.substring(0, time.indexOf("年"));
    				myear = Integer.valueOf(year).intValue();
    				month = time.substring(time.indexOf("年")+1, time.indexOf("月"));
    				mmonth = Integer.valueOf(month).intValue()-1;
    				day = time.substring(time.indexOf("月")+1, time.indexOf("日"));
    				mday = Integer.valueOf(day).intValue();
    				hour = time.substring(time.indexOf("日")+1, time.indexOf("时"));
    				mhour = Integer.valueOf(hour).intValue();
    				minute = time.substring(time.indexOf("时")+1, time.indexOf("分"));
    				mminute = Integer.valueOf(minute).intValue();
    				System.out.println(myear + "年" + mmonth + "月" + mday + "日"
    						+ mhour + "时" + mminute);
    				btAlarmCalendar.set(Calendar.YEAR, myear);
    				btAlarmCalendar.set(Calendar.MONTH, mmonth);
    				btAlarmCalendar.set(Calendar.DAY_OF_MONTH, mday);
    				btAlarmCalendar.set(Calendar.HOUR_OF_DAY, mhour);
    				btAlarmCalendar.set(Calendar.MINUTE, mminute);
    				btAlarmCalendar.set(Calendar.SECOND, 0);
    				btAlarmCalendar.set(Calendar.MILLISECOND, 0);
    				mAlarm = (AlarmManager) getSystemService(Service.ALARM_SERVICE);
    				intent = new Intent(BootAlarm.this, AlarmReceiver.class);
    				pendingIntent= PendingIntent.getBroadcast(
    						BootAlarm.this, cursor.getInt(0), intent, 0);// 第二个参数为区别不同闹铃的唯一标识
    				/* 设置闹钟 */
    				mAlarm.set(AlarmManager.RTC_WAKEUP,
    						btAlarmCalendar.getTimeInMillis(), pendingIntent);
    			}
    

    这里有个很需要注意的:

    intent = new Intent(BootAlarm.this, AlarmReceiver.class);
    				pendingIntent= PendingIntent.getBroadcast(
    						BootAlarm.this, cursor.getInt(0), intent, 0);

    若是PendingIntent.getBroadcas,则intent必须为启动的是BroadcastReceiver,不然重写不会成功的。


    7、到点闹铃响,这是由AlarmReceiver(继承BroadcastReceiver)启动的:

    dbHelper = new DatabaseHelper(Alarm.this, "ideal.sql");
    		SQLiteDatabase db = dbHelper.getReadableDatabase();
    		Cursor cursor = db.query("user", null, "_id=?",
    				new String[] { NoteActivity.Alarming_index + "" }, null, null,
    				null);
    		if (cursor.moveToFirst()) {
    			mtime = cursor.getString(cursor.getColumnIndex("mtime"));
    			mtext = cursor.getString(cursor.getColumnIndex("mtext"));
    		}
    		db.close();
    		addData();//写进历史记录表中
    		deleteData(NoteActivity.Alarming_index);//删除原来记录
    		
    		new AlertDialog.Builder(Alarm.this)
    				.setIcon(R.drawable.bell)
    				.setTitle("It's time to do something.")
    				.setMessage(mtext)
    				.setPositiveButton("Done",
    						new DialogInterface.OnClickListener() {
    							public void onClick(DialogInterface dialog,
    									int whichButton) {
    								deleteData(NoteActivity.Alarming_index);//再次删除确认
    								//关闭闹铃声
    								Intent intentSV = new Intent(Alarm.this, MyService.class);
    								stopService(intentSV);
    								Alarm.this.finish();
    							}
    						}).show();

    锁屏时也启动闹铃:

    //下面是为了在锁屏时也能启动闹铃
    		getWindow().addFlags(
                    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                                    | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    		getWindow().addFlags(
                    WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
                                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    8、置于闹铃音乐可以写一个Service,这个可查看Android学习笔记一栏
    9、点击listview可查看记录内容,长按可进行记录的删除,这里不再多写。

    10、由于是闹铃,所以必须每一秒中进行更新一下倒计时,这个可以查看Android学习笔记一栏。

    11、附:让title每秒显示时间:

    	public class TimeThread extends Thread {
    		@Override
    		public void run() {
    			do {
    				try {
    					Thread.sleep(1000);
    					Message msg = new Message();
    					msg.what = 1;
    					mHandler.sendMessage(msg);
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    				}
    			} while (true);
    		}
    	}
    
    	private Handler mHandler = new Handler() {
    		@Override
    		public void handleMessage(Message msg) {
    			super.handleMessage(msg);
    			switch (msg.what) {
    			case 1:
    				currentTime = new Date();
    				// long sysTime = System.currentTimeMillis();
    				CharSequence sysTimeStr = DateFormat.format(
    						"yyyy年MM月dd日hh:mm:ss", currentTime.getTime());
    				EditTime.this.setTitle(sysTimeStr);
    				break;
    
    			default:
    				break;
    			}
    		}
    	};

    ------------------(修改版)----------------------


    12、是否为记录添加闹铃:

    isAlarmBtn.setOnClickListener(new OnClickListener() {
    
    				@Override
    				public void onClick(View v) {
    					// TODO Auto-generated method stub
    					isAlarmNum++;
    					if (isAlarmNum % 2 == 0) {
    						isAlarmBtn.setBackgroundResource(R.drawable.checknull);
    						isAlarm = 0;
    					} else {
    						isAlarmBtn.setBackgroundResource(R.drawable.check);
    						isAlarm = 1;
    					}
    				}
    			});

    13、阻止设置时间小于当前时间:

    currentTime = new Date();
    					if (beginTime.getTime() < currentTime.getTime()) {
    						Toast.makeText(EditTime.this, "设置时间不能小于当前时间!",
    								Toast.LENGTH_SHORT).show();
    					}

    14、添加widget:

    AppWidget.java

    public class AppWidget extends AppWidgetProvider {
    
    	private DatabaseHelper dbHelper;
    	String[] desk_text;
    	@Override
    	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
    			int[] appWidgetIds) {
    		// TODO Auto-generated method stub
    		super.onUpdate(context, appWidgetManager, appWidgetIds);
    		//读取数据库中的记录
    		dbHelper = new DatabaseHelper(context, "ideal.sql");
    		SQLiteDatabase db = dbHelper.getReadableDatabase();
    		Cursor cursor = db.query("user", null, null, null, null, null, null);
    		int desk_num=0;
    		//桌面的便签只显示6条记录
    		desk_text = new String[6];
    		while(cursor.moveToNext()){
    			if(desk_num == 6){
    				break;
    			}
    			String temp_text = cursor.getString(cursor.getColumnIndex("mtext"));
    			//控制每条记录显示的长度
    			if(temp_text.length()>7){
    				temp_text=temp_text.substring(0, 7)+"...";
    			}
    			desk_text[desk_num]=temp_text;
    			System.out.println("desk_text[desk_num]"+desk_text[desk_num]);
    			desk_num++;			
    		}
    		db.close();
    		final int Num = appWidgetIds.length;
    		for (int i = 0; i < Num; i++) {
    			int[] mAppWidgetId = appWidgetIds;
    			RemoteViews mRemoteViews = new RemoteViews(context.getPackageName(),
    					R.layout.widget);
    			mRemoteViews.setTextViewText(R.id.desktop_text, array_to_string(desk_text));
    
    			Intent clickIntent = new Intent(context, NoteActivity.class);
    			PendingIntent pdIntent = PendingIntent.getActivity(context, 0,
    					clickIntent, 0);
    			mRemoteViews.setOnClickPendingIntent(R.id.widget_layout, pdIntent);
    			appWidgetManager.updateAppWidget(mAppWidgetId, mRemoteViews);
    		}
    	}
    	//onReceive方法用来接收广播,以便更新桌面的便签
    	
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		// TODO Auto-generated method stub
    		super.onReceive(context, intent);
    		if(intent.getAction().equals("com.ideal.note.widget")){
    			dbHelper = new DatabaseHelper(context, "ideal.sql");
    		SQLiteDatabase db = dbHelper.getReadableDatabase();
    		Cursor cursor = db.query("user", null, null, null, null, null, null);
    		int desk_num=0;
    		desk_text = new String[6];
    		while(cursor.moveToNext()){
    			if(desk_num == 6){
    				break;
    			}
    			String temp_text = cursor.getString(cursor.getColumnIndex("mtext"));
    			if(temp_text.length()>7){
    				temp_text=temp_text.substring(0, 7)+"...";
    			}
    			desk_text[desk_num]=temp_text;
    			System.out.println("desk_text[desk_num]"+desk_text[desk_num]);
    			desk_num++;			
    		}
    		db.close();
    		}
    		RemoteViews mRemoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
    		mRemoteViews.setTextViewText(R.id.desktop_text, array_to_string(desk_text));
    		AppWidgetManager.getInstance(context).updateAppWidget(new ComponentName(context, AppWidget.class), mRemoteViews);		
    	}
    	
    	//数组转化为字符显示
    	public String array_to_string(String[] array){
    		String temp_str = "";
    		for(int i=0;i<array.length;i++){
    			if(array[i]==null){
    				break;
    			}else {
    				temp_str = temp_str+"\n* "+array[i];
    			}
    		}
    		return  temp_str;
    	}
    }
    

    在其他修改了数据库数据的Activity或者其他地方发送一条广播来让AppWidget执行,如在NoteActivity.java中添加:

    Intent mWidgetIntent = new Intent();
    				mWidgetIntent.setAction("com.ideal.note.widget");
    				NoteActivity.this.sendBroadcast(mWidgetIntent);

    另,还需在AndroidManifest.xml中添加:

    <receiver android:name=".AppWidget"> 
                <intent-filter>
                    <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
                    <action android:name="com.ideal.note.widget"/>
                </intent-filter>
                <meta-data  android:name="android.appwidget.provider"
               	android:resource="@xml/appwidget_info"/> 
            </receiver>

    附源码下载地址:http://download.csdn.net/detail/moruna/7969393

    有疑问的可加入这个qq群聊一起讨论:431922622(奋斗的Android青年 )


    展开全文
  • 此demo实现了一个闹铃,用AlarmManager对象设定闹铃,时间到了后,系统会...注意:此demo在原生Android系统上没问题,但在国内大多数定制机上,如果关闭后台,闹铃一般不会触发 ╮(╯_╰)╭demo下载地址:http://dow

    此demo实现了一个闹铃,用AlarmManager对象设定闹铃,时间到了后,系统会调用设定好的BroadcastReceiver、Service或者Activity。

    AlarmManager可以设置以下五种类型(demo中使用的第二种):

    这里写图片描述

    注意:此demo在原生Android系统上没问题,但在国内大多数定制机上,如果关闭后台,闹铃一般不会触发 ╮(╯_╰)╭

    demo下载地址:http://download.csdn.net/detail/youmingyu/9715802

    MainAvtivity:

    package fk.androiddemo_030;
    
    import android.app.Activity;
    import android.app.AlarmManager;
    import android.app.PendingIntent;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
        Button setAlarmBut,cancelAlarmBut;
        EditText keyEdit,timeEdit;
        int alarmKey, alarmTime;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            keyEdit=(EditText)findViewById(R.id.keyEdit);
            timeEdit=(EditText)findViewById(R.id.timeEdit);
    
            setAlarmBut = (Button) findViewById(R.id.setAlarmBut);
            setAlarmBut.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    alarmKey=Integer.parseInt(keyEdit.getText().toString().trim());
                    alarmTime=Integer.parseInt(timeEdit.getText().toString().trim());
                    alarmTime=alarmTime*1000;//换成毫秒
    
                    Intent intent = new Intent(MainActivity.this, AlarmService.class);
                    //Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
                    intent.putExtra("alarmKey",alarmKey);
    
                    //PendingIntent还可以用getActivity()直接启动Activity
                    PendingIntent sender = PendingIntent.getService(MainActivity.this, alarmKey, intent, 0);
                    //PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, alarmKey, intent, 0);
    
                    long firstTime = SystemClock.elapsedRealtime(); // 开机之后到现在的运行时间(包括睡眠时间)
                    firstTime += alarmTime;
    
                    // 进行闹铃注册
                    AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
                    //manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 3000, sender);//重复闹钟
                    manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, sender);
    
                    Toast.makeText(MainActivity.this, "设置"+alarmKey+"号闹铃", Toast.LENGTH_LONG).show();
    
                    //MainActivity.this.finish();
                }
            });
    
            cancelAlarmBut = (Button) findViewById(R.id.cancelAlarmBut);
            cancelAlarmBut.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    alarmKey=Integer.parseInt(keyEdit.getText().toString().trim());
    
                    Intent intent = new Intent(MainActivity.this, AlarmService.class);
                    //Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
                    PendingIntent sender = PendingIntent.getService(MainActivity.this, alarmKey, intent, 0);
                    //PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, alarmKey, intent, 0);
    
                    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
                    am.cancel(sender);// 取消闹铃
    
                    Toast.makeText(MainActivity.this, "取消"+alarmKey+"号闹铃", Toast.LENGTH_LONG).show();
    
                    //MainActivity.this.finish();
                }
            });
        }
    }

    AlarmService:

    package fk.androiddemo_030;
    
    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;
    import android.widget.Toast;
    
    public class AlarmService extends Service {
        public AlarmService() {
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            // TODO: Return the communication channel to the service.
            throw new UnsupportedOperationException("Not yet implemented");
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            int alarmKey=intent.getIntExtra("alarmKey",-1);
            Toast.makeText(ContextUtil.getInstance(), alarmKey+"号闹铃响了, 可以做点事情了~~AlarmService", Toast.LENGTH_LONG).show();
    
            return super.onStartCommand(intent, flags, startId);
        }
    }

    AlarmReceiver:

    package fk.androiddemo_030;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.widget.Toast;
    
    public class AlarmReceiver extends BroadcastReceiver {
        public AlarmReceiver() {}
    
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO: This method is called when the BroadcastReceiver is receiving
    
            int alarmKey=intent.getIntExtra("alarmKey",-1);
            Toast.makeText(context, alarmKey+"号闹铃响了, 可以做点事情了~~AlarmReceiver", Toast.LENGTH_LONG).show();
        }
    }

    运行截图:

    这里写图片描述

    展开全文
  • 便签提醒 除了手机自带的记事本软件外,还可以在手机上安装第三方的记事本便签软件设置闹铃提醒,那么手机上下载哪个带有闹铃记事本的便签软件好用呢?小编今天给大家推荐一款叫敬业签的记事本便签软件。 敬业签是...

    随着生活和工作节奏的不断加快,每天大家要处理的事情越来越多,稍有不留意就很容易忘记重要的事情。为了避免忘记重要的事情,很多人的做法会在手机上设置一个闹钟,到点能准时提醒,但是使用闹钟设置提醒时,不能以文字的形式展示要提醒的内容,因此很多人又开始找手机上使用的带有闹钟提醒的记事本软件。

    现如今随着智能手机的发展,几乎每一个品牌手机上都有自带的记事本软件,有些会以“便签”、“备忘录”命名,功能大同小异,都可用来记录每日待办事项,且可以设定闹铃提醒,能在固定的时间内提醒大家想要做的事情。

    4e7ee8f78f615e4296648811e36096b0.png

    便签提醒

    除了手机自带的记事本软件外,还可以在手机上安装第三方的记事本便签软件设置闹铃提醒,那么手机上下载哪个带有闹铃记事本的便签软件好用呢?小编今天给大家推荐一款叫敬业签的记事本便签软件。

    敬业签是一款集提醒、记事和备忘于一体的便签软件,可以记录日常待办事项、行程约会等信息,且在记录内容时可以逐条进行梳理,每一条待办内容都支持设置闹铃提醒,敬业便签可设置按照公历或者农历日期进行单次定时提醒,还可设置按天/周/月/季/年周期循环提醒,还支持设定重要事项间隔时间提醒和到期延时提醒。

    a3a6b033636c4bef1212b95bfd87a6ef.png

    手机便签待办事项

    通过查看便签上记录的待办事项可以理清每一项工作日程的轻重缓急,做好各项事务的管理工作。另外,敬业便签还支持绑定微信提醒、开启语音电话提醒、短信提醒、钉钉提醒、和邮箱提醒,多方位提醒大家按时完成待办事项,在便签软件的闹铃提醒下,大家可以提高做事的积极性,同时避免忘记重要的事情。

    展开全文
  • Android 实现闹铃效果

    千次阅读 2018-10-17 11:18:16
    最近项目里有个功能,需要实现闹铃效果。 网上查了一大堆资料,都说要使用AlarmManager,AlarmManager使用起来倒是很简单。但App 一旦被杀了,就不起作用了…… 然后又有好多可以让app存活的文章,奈何能在多款...

    最近项目里有个功能,需要实现闹铃效果。

    网上查了一大堆资料,都说要使用AlarmManager,AlarmManager使用起来倒是很简单。但App 一旦被杀了,就不起作用了……

    然后又有好多可以让app存活的文章,奈何能在多款手机上,多种版本上都起作用的几乎没有……反正我在git上下载了几个demo都不行

    在尝试了一整天还是不能达到效果之后,果断放弃了AlarmManager。然后继续在网上查询资料,终于发现了“日历事件

    通过向手机自带的日历中添加提醒事件完美的实现了闹铃的效果!再也不用担心app在后台放久了,或者app被杀掉了这些让人头疼的问题了!

    展开全文
  • 完整Android记事本,备忘录(包含闹铃提醒功能)源码,只要导入到Eclipse中即可运行。(闹钟功能可能不完整,请酌情下载
  • 文件名称: Clock下载 收藏√ [5 4 3 2 1]开发工具: Others文件大小: 530 KB上传时间: 2017-04-20下载次数: 0提 供 者: 墨离非详细说明:Quartus II 开发的多功能数字时钟,有计时、调时、闹铃、警报等功能-Quartus ...
  • 问题的提出小程序使用wx.playVoice播放音频时,需要从网上下载播放的对象文件,但是每次播放都要下载的话,就太傻了。好在小程序提供了保存文件的功能。思路准备一个url到缓存文件的映射,当小程序成功的下载播放...
  • 上一篇文章实现了音频文件缓存功能,做到了一次下载多次播放。但是还有一个问题:这个功能是作为app的一个功能而存在,如果想在其他场合使用就必须是代码层次的拷贝和粘贴。不好。我们继续改进,将这部分功能做成一...
  • 下载之家 → 地图导航 → 桌面工具 → 闹铃时钟 → 开心小闹钟 2.8 beta3软件大小:3.38 MB 软件语言:简体中文 软件授权:共享版 软件类别:桌面工具 - 闹铃时钟 应用平台:WinNT/2000/XP/2003 上一软件:飞雪桌面...
  • (源代码下载) 2、安卓闹钟 安卓闹钟 -- 一款非常好用的闹钟软件,可根据你的喜好,添加你所喜欢的闹铃铃声。 (源代码下载) 3、管道连接 管道连接 -- 超级管道连接:通过旋转区块连接端子到服务器。触摸旋转区块, 或...
  • 综合运用51单片机知识设计一个可以随意调节时间、带整点闹铃的时钟。(其中用到定时器、中断、按键、蜂鸣器、数码管或串口通信) 下载地址:http://pan.baidu.com/s/1qWBdHOK 第十一讲:用DS12C887时钟芯片设计一...
  • EasyAndroid 包含各种工具类的集合,会不定期更新,欢迎贡献code 使用方法: 2.0.0以后,放弃了support库,请使用AndroidX ... 然后,在自己的Application中调用Utils.init(this);进行初始化 添加混淆: ...
  • android 跨应用程序广播发送接受

    万次阅读 热门讨论 2016-05-18 18:09:25
    例如,开机,闹铃,电池电量过低等等。但还可以自定义广播,用来两个应用程序的通知。 曾经写的开机自启动的博客(通过接受系统广播):Android 开机自启动示例程序 这篇博客源码下载:点击 1、实现界面   ...
  • 4.jQuery带闹铃数字时钟 能在支持 FireFox、Chrome、Safari、傲游、搜狗、360浏览器。    源码下载/ 在线演示   5. SVG时钟走时图标特效   源码下载/ 在线演示   6. jQuery带闹铃数字时钟   ...
  • iOS 自定义闹钟

    2019-11-16 22:49:03
    从服务器获取到一组时间,都设置成闹铃,默认是每天循环不可修改,同时可以自定义闹铃,可选择周几循环。可以设置打开关闭或者删除。 #####一. 固定闹钟,每天循环。 很简单,将需要设置成闹钟的时间放入一个数组中...
  • 从服务器获取到一组时间,都设置成闹铃,默认是每天循环不可修改,同时可以自定义闹铃,可选择周几循环。可以设置打开关闭或者删除。 #####一. 固定闹钟,每天循环。 很简单,将需要设置成闹钟的时间放入一个数组中...
  • 制作手机铃声应该如何选择专业音乐剪辑器?音乐是日常生活必不可少的,很多人都有编辑歌曲的习惯, 将喜欢的歌曲或者音乐文件,高潮部分制作成手机铃声或闹铃,它...工具下载地址:http://www.qvevideo.com/audio 音乐.
  • 音乐是日常生活必不可少的,很多人都有编辑歌曲的习惯, 将喜欢的歌曲或者音乐文件,高潮部分制作成手机铃声或闹铃,它彰显的个人独特的个性。怎样把音乐喜欢的部分剪切出来保存呢?那么需要选择一款专业,操作简单...
  • 电脑流量监控

    2009-12-13 11:19:00
    电脑流量监控软件 因为爱看电影,使用下载工具又担心数据永无休止的上传,所以有了这个软件,他可以在下载完毕或者上传数据量远远大于下载数据量的时候自动关闭下载工具,呵护硬盘的健康。 软件具备实时的监视网络...
  • 设定周期性的闹铃提醒和后台服务,最常见的用途是定期更新应用程序的数据,从互联网上下载资源,缓存数据或者执行长时间的下载任务。但是如果设备当前没有连接到网络,或者是网络状况不稳定,连接太慢,不能正常完成...
  • Android课程提醒案例

    2021-01-13 12:22:18
    该课程提醒app实现了冬季、夏季课程提醒,闹铃设置等功能,适合新手学习。 开发语言: java 技术框架: mvc 开发工具: AndroidStudio2.2,新手最好使用此版本搭建,不同版本修改配置比较繁琐 数据库 sqlite ...
  • 在线演示 源码下载 2、HTML5环形音乐播放器 播放器外观非常酷 之前我们分享过几款HTML5音乐播放器和视频播放器,像这款HTML5卡带式古典播放器、HTML5视频播放器Video.Js非常不错。今天我要分享一款外观更酷的HTML5...
  • miniftp项目总结(七)

    2020-04-17 21:47:49
    通过安装一个闹铃信号来实现。控制连接是否断开还得考虑此时是否有数据连接建立(即正在实现上传、下载、显示列表的功能) 查看信号命令: kill -l 数据连接的空闲断开 上传、下载、显示列表的时候,数据连接必须...
  • 很多情况下我们都需要这样一种简单的效果:点击一个Textview或者是EditText等可以弹出一个选择时间的对话窗口,选好后再将时间设置为前者的文本,这就是所谓的时间拾取器,这种效果在设置闹铃时我们时常见到,接下来...
  • 开源代码收集分享

    2015-09-01 09:59:00
    开源分享(点击标题下载源码): 1.Xabber客户端 ...5.玲闹铃 6.魔乐盒 7.PWP日历 8.Apollo音乐播放器 9.夏普名片识别 10.高仿人人网 11.简洁天气 12.高仿开心网 13.百度推聊 ...

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

下载闹铃