将接收器和服务添加到android提醒应用

鲁珀德

我正在使用AlarmManager创建一个android提醒应用程序。我的主要活动的GUI包含一个时间和日期选择器对话框以及一个调用setReminder函数的按钮,该函数获取用户输入的时间和日期并为该特定日期和时间设置提醒。提醒时间发生时,它会转到另一个活动,该活动的GUI包含暂停和取消的按钮。我使用MediaPlayer播放了警报。两个按钮都运作良好。即使应用程序已关闭,我也希望警报在后台运行,并且希望我的应用程序将警报通知操作系统。这就是为什么我要向此应用程序添加广播接收器和服务。我怎样才能做到这一点?

主要活动代码:

 public class MainActivity extends Activity {
    AlarmManager alarmMgr;


   private Calendar calendar;
   private TextView dateView;
   private int year, month, day;
   private int hour,min;
  // private int sYear, sMonth, sDay;
   //private int sHour,sMin;


   private EditText time;
   private String format = "";
   PendingIntent pi;




 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    dateView = (TextView) findViewById(R.id.editText2);
    calendar = Calendar.getInstance();
    year = calendar.get(Calendar.YEAR);

    month = calendar.get(Calendar.MONTH);
    day = calendar.get(Calendar.DAY_OF_MONTH);
    showDate(year, month+1, day);


      time = (EditText) findViewById(R.id.editText3);
      calendar = Calendar.getInstance();

      hour = calendar.get(Calendar.HOUR_OF_DAY);
      min = calendar.get(Calendar.MINUTE);
      showTime(hour, min);       


}
  @SuppressWarnings("deprecation")
  public void setDate(View view) {
   showDialog(999);
   Toast.makeText(getApplicationContext(), "ca", Toast.LENGTH_SHORT)
   .show();
   }
  @Override
  protected Dialog onCreateDialog(int id) {
   // TODO Auto-generated method stub
   if (id == 999) {
      return new DatePickerDialog(this,myDateListener, year, month, day);
   }
   else if (id == 1111) {
       return new TimePickerDialog(this,myTimeListener, hour,min,true);
    }
   return null;
  }

 private DatePickerDialog.OnDateSetListener myDateListener = new  DatePickerDialog.OnDateSetListener() {
   @Override
   public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
      // TODO Auto-generated method stub

      showDate(arg1, arg2+1, arg3);
   }
   };

  private void showDate(int year, int month, int day) {
   dateView.setText(new StringBuilder().append(day).append("/")
   .append(month).append("/").append(year));
   this.year=year;
   this.month=(month-1);
   this.day=day; 

 }


 @SuppressWarnings("deprecation")
 public void setTime(View view) {
 showDialog(1111);
 Toast.makeText(getApplicationContext(), "set", Toast.LENGTH_SHORT)
 .show();
 }


private TimePickerDialog.OnTimeSetListener myTimeListener = new TimePickerDialog.OnTimeSetListener() {

@Override
public void onTimeSet(TimePicker arg0, int arg1, int arg2) {
    showTime(arg1,arg2);

}

};
public void showTime(int hour, int min) {

   time.setText(new StringBuilder().append(hour).append(" : ").append(min)
      .append(" ").append(format));

      this.hour= hour;
      this.min= min;
   }  


    public void setAlarm(View v) 
   { 



   alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
   Intent intent = new Intent(getApplicationContext(),Alarm.class);

    PendingIntent                pi=PendingIntent.getActivity(getApplicationContext(),0,intent,0);


    calendar.setTimeInMillis(System.currentTimeMillis());
    Calendar calendar = Calendar.getInstance();
     calendar.set(Calendar.MONTH, month);
    calendar.set(Calendar.YEAR, year);
    calendar.set(Calendar.DAY_OF_MONTH, day); 

    calendar.set(Calendar.HOUR_OF_DAY, hour);
    calendar.set(Calendar.MINUTE, min);
  long timeToAlarm = calendar.getTimeInMillis();



  alarmMgr.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), pi); 



}


     @Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}

主xml

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity" >

  <EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView2"
    android:layout_alignLeft="@+id/button1"
    android:ems="10" >

    <requestFocus />
 </EditText>

 <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:onClick="setAlarm"
    android:text="Set" />

 <EditText
    android:id="@+id/editText2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/button2"
    android:layout_alignParentRight="true"
    android:ems="10" />

 <Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button1"
    android:layout_alignLeft="@+id/textView2"
    android:layout_marginBottom="33dp"
    android:onClick="setDate"
    android:text="Set Date" />

 <EditText
    android:id="@+id/editText3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/editText1"
    android:layout_marginTop="104dp"
    android:ems="10" />

 <Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/editText3"
    android:layout_alignBottom="@+id/editText3"
    android:layout_alignLeft="@+id/textView2"
    android:onClick="setTime"
    android:text="SetTime" />

 <TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="67dp"
    android:text="Set Hobby"
    android:textAppearance="?android:attr/textAppearanceLarge" />

  </RelativeLayout>

Alarm.java

 public class Alarm extends Activity {
   MediaPlayer mp;
   AlarmManager AlmMgr;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alarm);
    mp=MediaPlayer.create(getApplicationContext(), R.raw.tum);
    mp.start();
  }
public void onCancel(View v)
{
 mp.stop();
 mp=null;
 }

 public void onSnooze(View v)
 {
  mp.stop();
  AlarmManager AlmMgr = (AlarmManager)getSystemService(ALARM_SERVICE);

  Calendar calendar = Calendar.getInstance();

  calendar.add(Calendar.MINUTE, 1); 
  long snoozeTime = calendar.getTimeInMillis();

  Intent AlarmIntent = new Intent(getApplicationContext(),this.getClass());
  AlarmIntent.putExtra("REQUEST CODE", 1);


  PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 1, AlarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);   
  AlmMgr.set(AlarmManager.RTC_WAKEUP, snoozeTime, pi);

 }




 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_alarm, menu);
    return true;
 }

}

activity_alarm_xml

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".Alarm" >

  <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="67dp"
    android:onClick="onCancel"
    android:text="Cancel" />

  <Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_marginLeft="48dp"
    android:text="Snooze"
    android:onClick="onSnooze" />

</RelativeLayout>
伊沙哈克

我想在此应用程序中添加广播接收器和服务。我怎样才能做到这一点?

好吧,除非您告诉我们两者的目的是什么,您想对它们做什么,以及您已经尝试过什么,否则将不可能提供帮助。

添加BradcastReceiver

public class MySnoozeReciever extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent intent = new Intent(context, Alarm .class);
       intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       startActivity(intent);
    }
}

不要忘记清单:

 <receiver android:name='.MySnoozeReciever'>
    </receiver>

修改这些行:

Intent intent = new Intent(getApplicationContext(), MySnoozeReciever.class);

PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(),0,intent,0);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android-广播接收器和服务之间的区别

来自分类Dev

如何将Spring Boot HealthIndicator添加到Imap接收器IntegrationFlow

来自分类Dev

将从服务器接收的位图添加到android中的图像gridview

来自分类Dev

Android将密钥添加到从Web服务接收的非关联json数组中

来自分类Dev

无法使用Media Foundation中的接收器编写器将音频流添加到MP4文件

来自分类Dev

使用 Jetty 服务器将 Spring Cloud sleuth 添加到 Spring 应用程序

来自分类Dev

为什么广播接收器不适用于服务应用程序 android?

来自分类Dev

Blazor Web应用程序的TCP接收器服务

来自分类Dev

以编程方式将服务器证书信息添加到Trust Manager Android

来自分类Dev

将服务器逻辑添加到GAE Android后端

来自分类Dev

Android接收器-多个应用中接收器的名称和作用相同

来自分类Dev

将应用程序控制器添加到android项目?

来自分类Dev

将PubNub添加到聊天服务器

来自分类Dev

将ssh公钥添加到服务器

来自分类Dev

将目录添加到Apache服务器

来自分类Dev

将Glassfish服务器添加到Eclipse Luna

来自分类Dev

将模块添加到解析服务器

来自分类Dev

如何将api添加到服务器?

来自分类Dev

将Tensorboard服务器添加到Flask端点

来自分类Dev

Netty将httprequest添加到服务器处理

来自分类Dev

将密钥对添加到远程 linux 服务器

来自分类Dev

广播接收器或服务?

来自分类Dev

和服-将GUID添加到RSS输出

来自分类Dev

和服-将GUID添加到RSS输出

来自分类Dev

将包从服务传递到接收器返回 null

来自分类Dev

Android上允许的最大服务和接收器数量

来自分类Dev

在应用关闭时从广播接收器运行任务[Android]

来自分类Dev

通过Android应用将位置添加到newUploadPhotoRequest(Facebook)

来自分类Dev

将Java文件添加到Android应用程序

Related 相关文章

  1. 1

    Android-广播接收器和服务之间的区别

  2. 2

    如何将Spring Boot HealthIndicator添加到Imap接收器IntegrationFlow

  3. 3

    将从服务器接收的位图添加到android中的图像gridview

  4. 4

    Android将密钥添加到从Web服务接收的非关联json数组中

  5. 5

    无法使用Media Foundation中的接收器编写器将音频流添加到MP4文件

  6. 6

    使用 Jetty 服务器将 Spring Cloud sleuth 添加到 Spring 应用程序

  7. 7

    为什么广播接收器不适用于服务应用程序 android?

  8. 8

    Blazor Web应用程序的TCP接收器服务

  9. 9

    以编程方式将服务器证书信息添加到Trust Manager Android

  10. 10

    将服务器逻辑添加到GAE Android后端

  11. 11

    Android接收器-多个应用中接收器的名称和作用相同

  12. 12

    将应用程序控制器添加到android项目?

  13. 13

    将PubNub添加到聊天服务器

  14. 14

    将ssh公钥添加到服务器

  15. 15

    将目录添加到Apache服务器

  16. 16

    将Glassfish服务器添加到Eclipse Luna

  17. 17

    将模块添加到解析服务器

  18. 18

    如何将api添加到服务器?

  19. 19

    将Tensorboard服务器添加到Flask端点

  20. 20

    Netty将httprequest添加到服务器处理

  21. 21

    将密钥对添加到远程 linux 服务器

  22. 22

    广播接收器或服务?

  23. 23

    和服-将GUID添加到RSS输出

  24. 24

    和服-将GUID添加到RSS输出

  25. 25

    将包从服务传递到接收器返回 null

  26. 26

    Android上允许的最大服务和接收器数量

  27. 27

    在应用关闭时从广播接收器运行任务[Android]

  28. 28

    通过Android应用将位置添加到newUploadPhotoRequest(Facebook)

  29. 29

    将Java文件添加到Android应用程序

热门标签

归档