您的位置:首页 > 职场人生

黑马程序员——Android之广播接收者Alarm实例

2015-03-09 17:28 337 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
package com.example.alarm;

import java.util.Calendar;

import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RadioGroup;
import android.widget.TimePicker;

public class MainActivity extends Activity implements OnTimeSetListener,OnClickListener,OnCheckedChangeListener
{
Calendar calendar=Calendar.getInstance();//代表当前的日历
Button button1;
CheckBox checkBox;
boolean flag=true;//是否只执行一次

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1=(Button)findViewById(R.id.button);
//找到id为button
checkBox=(CheckBox) findViewById(R.id.checkbox);
button1.setOnClickListener(this);
checkBox.setOnClickListener(this);

}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v==button1)
{
calendar.setTimeInMillis(System.currentTimeMillis());
new TimePickerDialog(MainActivity.this,this,calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true).show();
}
}

@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
//将时间设置为定时的时间
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
Intent intent=new Intent(MainActivity.this,MyAlarmBroadCast.class);
PendingIntent pendingIntent=PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
//获取全局定时器的服务管理器
AlarmManager alarmManager=(AlarmManager) getSystemService(ALARM_SERVICE);
if(flag)
{//如果只执行一次的情况
/*
*
*/
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
}
else
{//不是执行一次的情况
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),5*1000,pendingIntent);
}
}

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
flag=!isChecked;
}

}
package com.example.alarm;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyAlarmBroadCast extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.d("first","受到广播");
}

}


——需要在Manifest里面注册:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.alarm"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".MyAlarmBroadCast" />
</application>

</manifest>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="是否重复响铃" >
</CheckBox>
<!-- 单击此按钮弹出时间设置选择框 -->

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="定时" />

</LinearLayout>


——所有代码均在android2.2下运行过
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: