求为什么微信解封失败微信号

15701人阅读
Android项目
一、闹铃功能介绍:
1、为每条备忘添加闹铃
2、备忘内容和闹铃信息存在SQL中
3、可删除每天记录和闹铃或者删除所有
4、到点闹铃启动,包括锁屏时和重开机
5、在桌面的创建一个widget类似便签那样的东西显示记录
二、看下效果图:
三、关于SQL部分不再细写,可查看Android应用开发一栏:
添加闹铃和备忘:
1、设置日期:
dateBtn.setOnClickListener(new OnClickListener() {
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 =
EditTime.this.month = monthOfY
EditTime.this.day = dayOfM
dateBtn.setText(year + &年& + (month + 1)
+ &月& + day + &日&);
System.out.println(year+&年&+(monthOfYear+1)+&月&+dayOfMonth+&日&);
}, year, month, day).show();
2、设置时间:
timeBtn.setOnClickListener(new OnClickListener() {
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 = hourOfD
EditTime.this.minute =
timeBtn.setText(hour + &时& + minute + &分&);
System.out.println(hourOfDay+&时&+minute+&分&);
}, hour, minute, false).show();
3、广播闹铃:
setBtn.setOnClickListener(new OnClickListener() {
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);
4、广播接收BroadcastReceiver:
public class AlarmReceiver extends BroadcastReceiver {
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);
记得注册:
android:name=&.AlarmReceiver&
android:process=&:remote& /&
5、重启之后重写闹铃,BootReceiver:
public class BootReceiver extends BroadcastReceiver{
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,
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 {
public void run() {
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() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
currentTime = new Date();
// long sysTime = System.currentTimeMillis();
CharSequence sysTimeStr = DateFormat.format(
&yyyy年MM月dd日hh:mm:ss&, currentTime.getTime());
EditTime.this.setTitle(sysTimeStr);
------------------(修改版)----------------------
12、是否为记录添加闹铃:
isAlarmBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
isAlarmNum++;
if (isAlarmNum % 2 == 0) {
isAlarmBtn.setBackgroundResource(R.drawable.checknull);
isAlarm = 0;
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 dbH
String[] desk_
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){
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_
System.out.println(&desk_text[desk_num]&+desk_text[desk_num]);
desk_num++;
db.close();
final int Num = appWidgetIds.
for (int i = 0; i & N i++) {
int[] mAppWidgetId = appWidgetI
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方法用来接收广播,以便更新桌面的便签
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){
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_
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.i++){
if(array[i]==null){
temp_str = temp_str+&\n* &+array[i];
在其他修改了数据库数据的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&
附源码下载地址:
有疑问的可加入这个qq群聊一起讨论:(奋斗的Android青年 )
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:220110次
积分:2503
积分:2503
排名:第12184名
原创:51篇
转载:11篇
评论:95条
文章:35篇
阅读:75729
(1)(1)(1)(1)(1)(1)(2)(3)(2)(2)(6)(6)(36)Android菜鸟的成长笔记(25)——可爱的小闹钟
摘要:这一篇主要使用为我们提供的一个服务AlarmManager来制作一个小闹钟,同时还涉及到了自定义主题、判断第一次启动应用、自定义动画、对话框、制作指导滑动页面等方面。最后形成一个可以直接在手机上面使用的小闹钟。开始启动界面AppStart.javapackage com.example.
import android.app.A
import android.content.I
import android.content.SharedP
import android.content.SharedPreferences.E
import android.content.pm.PackageManager.NameNotFoundE
import android.os.B
import android.os.H
import android.util.L
import android.widget.LinearL
public class AppStart extends Activity{
public static final String PACKAGE_NAME = "com.example.alarmtest";
public static final String VERSION_KEY = "versionCode";
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//判断是否是首次安装
/** 判断应用首次运行 **/
preferences = getSharedPreferences("count",MODE_WORLD_READABLE);
int count = preferences.getInt("start_count", 0);
if(count == 0){
Editor editor = preferences.edit();
//存入数据
editor.putInt("start_count", ++count);
//提交修改
Intent intent = new Intent(AppStart.this, GuideActivity.class);
startActivity(intent);
AppStart.this.finish();
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setLayoutParams(params);
linearLayout.setOrientation(LinearLayout.VERTICAL);
linearLayout.setBackgroundResource(R.drawable.main_bg_default_img_2);
new Handler().postDelayed(new Runnable(){
public void run(){
Intent intent = new Intent (AppStart.this, MainActivity.class);
startActivity(intent);
AppStart.this.finish();
setContentView(linearLayout);
上面使用sharedPreference中的默认设值来判断该应用是否是第一次启动,如果是第一次启动则启动GuidActivity进入指导页面,如果不是第一次启动则启动MainActivity进入主界面。先看看GuidActivity的实现package com.example.
import java.util.ArrayL
import android.app.A
import android.os.B
import android.os.H
import android.os.M
import android.os.P
import android.support.v4.view.PagerA
import android.support.v4.view.ViewP
import android.support.v4.view.ViewPager.OnPageChangeL
import android.view.LayoutI
import android.view.MotionE
import android.view.V
import android.view.View.OnClickL
import android.view.ViewG
import android.view.ViewGroup.LayoutP
import android.view.W
import android.view.WindowM
import android.widget.ImageV
* 第一次安装引导用户的Activity
* @author lixq
public class GuideActivity extends Activity{
private ViewPager viewP
private ArrayList pageV
private ImageView imageV
private ImageView[] imageV
// 包裹滑动图片LinearLayout
private ViewG
// 包裹小圆点的LinearLayout
private ViewG
//左箭头按钮
private ImageView imageViewL
//右箭头按钮
private ImageView imageViewR
//当前页码
private int currentI
//ImageView的alpha值
private int mAlpha = 0;
private boolean isH
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//将要显示的图片放到ArrayList当中,存到适配器中
LayoutInflater inflater = getLayoutInflater();
pageViews = new ArrayList();
pageViews.add(inflater.inflate(R.layout.guide_item1, null));
pageViews.add(inflater.inflate(R.layout.guide_item2, null));
pageViews.add(inflater.inflate(R.layout.guide_item3, null));
pageViews.add(inflater.inflate(R.layout.guide_item4, null));
//将图片存放到ImageView集合中
imageViews = new ImageView[pageViews.size()];
main = (ViewGroup)inflater.inflate(R.layout.guide, null);
//获取存放底部导航点ViewGroup
group = (ViewGroup)main.findViewById(R.id.guide_point_ll);
viewPager = (ViewPager)main.findViewById(R.id.guide_viewpager);
imageViewLeft = (ImageView)main.findViewById(R.id.imageView1);
imageViewRight = (ImageView)main.findViewById(R.id.imageView2);
imageViewLeft.setAlpha(0);
imageViewRight.setAlpha(0);
//将小圆点放到imageView数组当中
for (int i = 0; i < pageViews.size(); i++) {
System.out.println("pageViews.size() = " + pageViews.size());
imageView = new ImageView(GuideActivity.this);
imageView.setLayoutParams(new LayoutParams(20,20));
imageView.setPadding(20, 0, 20, 0);
imageViews[i] = imageV
if (i == 0) {
//默认选中第一张图片
imageViews[i].setBackgroundResource(R.drawable.green_point);
imageViews[i].setBackgroundResource(R.drawable.gray_point);
group.addView(imageViews[i]);
setContentView(main);
viewPager.setAdapter(new GuidePageAdapter());
viewPager.setOnPageChangeListener(new GuidePageChangeListener());
imageViewLeft.setOnClickListener(new ButtonListener());
imageViewRight.setOnClickListener(new ButtonListener());
//左右切换屏幕的按钮监听器
class ButtonListener implements OnClickListener{
public void onClick(View v) {
// TODO Auto-generated method stub
int showNext=0;
if(v.getId() == R.id.imageView1) {
System.out.println("点击了向左的按钮");
if(currentIndex ==0 )
showNext = currentI
showNext = currentIndex-1;
viewPager.setCurrentItem(showNext);
if(v.getId() == R.id.imageView2){
System.out.println("点击了向右的按钮");
if(currentIndex == imageViews.length)
showNext = currentI
showNext = currentIndex+1;
viewPager.setCurrentItem(showNext);
System.out.println("当前页码:"+showNext);
* 设置按钮渐显效果
private Handler mHandler = new Handler()
public void handleMessage(Message msg) {
if(msg.what==1 && mAlpha255)
mAlpha=255;
imageViewLeft.setAlpha(mAlpha);
imageViewLeft.invalidate();
imageViewRight.setAlpha(mAlpha);
imageViewRight.invalidate();
if(!isHide && mAlpha0){
mAlpha -= 3;
if(mAlpha0)
mHandler.sendEmptyMessageDelayed(0, 2);
private void showImageButtonView(){
mHandler.sendEmptyMessage(1);
private void hideImageButtonView(){
new Thread(){
public void run() {
mHandler.sendEmptyMessage(0);
} catch (Exception e) {
}.start();
public boolean dispatchTouchEvent(MotionEvent ev) {
System.out.println("this is dispatch");
System.out.println("触碰屏幕");
switch (ev.getAction()) {
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
showImageButtonView();
case MotionEvent.ACTION_UP:
hideImageButtonView();
return super.dispatchTouchEvent(ev);
// 指引页面数据适配器,实现适配器方法
class GuidePageAdapter extends PagerAdapter {
public int getCount() {
return pageViews.size();
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return super.getItemPosition(object);
public void destroyItem(View arg0, int arg1, Object arg2) {
// TODO Auto-generated method stub
((ViewPager) arg0).removeView(pageViews.get(arg1));
public Object instantiateItem(View arg0, int arg1) {
// TODO Auto-generated method stub
((ViewPager) arg0).addView(pageViews.get(arg1));
return pageViews.get(arg1);
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub
public Parcelable saveState() {
// TODO Auto-generated method stub
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
// 指引页面更改事件监听器,左右滑动图片时候,小圆点变换显示当前图片位置
class GuidePageChangeListener implements OnPageChangeListener {
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
public void onPageSelected(int arg0) {
currentIndex = arg0;
for (int i = 0; i < imageViews. i++) {
imageViews[arg0].setBackgroundResource(R.drawable.green_point);
if (arg0 != i) {
imageViews[i].setBackgroundResource(R.drawable.gray_point);
使用ViewPage来显示各个布局文件,在四个布局文件中分别放四张图片。详情请看:http://blog.csdn.net/dawanganban/article/details/进入主界面后就是我们设置闹钟的界面了,实现如下:package com.example.
import java.util.C
import android.app.A
import android.app.AlarmM
import android.app.PendingI
import android.app.S
import android.app.TimePickerD
import android.content.I
import android.os.B
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.TimeP
import android.widget.T
public class MainActivity extends Activity {
AlarmManager alarmM
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button1);
//获取AlarmManager对象
alarmManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Calendar currentTime = Calendar.getInstance();
//创建一个TimePickerDialog实例,并显示
new TimePickerDialog(MainActivity.this, 0,
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
//指定启动AlarmActivity
Intent intent = new Intent(MainActivity.this, AlarmActivity.class);
//创建PendingIntent对象
* PendingIntent与Intent的区别是PendingIntent处理即将发生的事情
* 比如:在通知栏Notification中跳转页面,不是立即跳转
* 通常通过
getActivity、getBroadcast、getService得到PendingIntent的实例
PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR, hourOfDay);
c.set(Calendar.MINUTE, minute);
alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
Toast.makeText(MainActivity.this, "设置闹钟成功", Toast.LENGTH_SHORT).show();
}, currentTime.get(Calendar.HOUR_OF_DAY), currentTime.get(Calendar.MINUTE), false).show();
上面使用了一个时间设置组件TimePickDialog来设置时间,设置完时间后使用AlarmManager的set方法设置闹钟,值得注意的是上面有一个PendingIntent,这个和Intent的区别是PendIntent表示即将发生的意图,常和AlarmManager与Notifycation同时使用。另外,AlarmManager.RTC_WAKEUP表示一个定时器且会发出警报。闹钟到时间后启动AlarmActivity来播放音乐package com.example.
import android.app.A
import android.app.AlertD
import android.app.N
import android.content.DialogI
import android.content.DialogInterface.OnClickL
import android.media.MediaP
import android.os.B
public class AlarmActivity extends Activity{
MediaPlayer alarmM
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载指定音乐,并为之创建MediaPlayer对象
alarmMusic = MediaPlayer.create(this, R.raw.nswdy);
alarmMusic.setLooping(true);
//播放闹钟
alarmMusic.start();
//创建一个对话框
new AlertDialog.Builder(AlarmActivity.this).setTitle("闹钟")
.setMessage("闹钟响了,快起床啦!")
.setPositiveButton("确定", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//停止音乐
alarmMusic.stop();
AlarmActivity.this.finish();
}).show();
最后的运行结果:
源代码下载:http://download.csdn.net/detail/lxq_xsyu/6963763
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 微信解封有人工服务吗 的文章

 

随机推荐