扣丁学堂Android培训

扣丁学堂Android培训入门中基于Alarmmanager实现

2018-06-28  本文已影响11人  994d14631d16

本文实例为大家分享了Alarmmanager实现简单闹钟功能的具体代码,供大家参考,方便大家去更熟悉Android,熟悉编程,并且方便应用到实例当中,使自己对Android方面有根深的了解与印象。

代码:

activity_main.xml

  android:layout_width="match_parent"

  android:layout_height="match_parent">

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="启动闹钟"

    android:id="@+id/button"

    android:onClick="startAlarmClick"

    android:layout_alignParentEnd="true"

    android:layout_alignParentStart="true" />

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="设置闹钟"

    android:id="@+id/button2"

    android:layout_below="@+id/button"

    android:onClick="startSetAlarmClick"

    android:layout_alignParentStart="true"

    android:layout_alignParentEnd="true" />

MainActivity.java

package com.example.haige.alarmmanager;

import android.app.Activity;

import android.app.AlarmManager;

import android.app.PendingIntent;

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

public class MainActivity extends Activity

{

  protected void onCreate(Bundle savedInstanceState)

  {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

  }

  /*

  启动闹钟

  */

  public void startAlarmClick(View view)

  {

    //获取系统的闹钟服务

    AlarmManager am= (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    //触发闹钟的时间(毫秒)

    long triggerTime= System.currentTimeMillis()+3000;

    Intent intent=new Intent(this,Alarmctivity.class);

    PendingIntent op=PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);

    //启动一次只会执行一次的闹钟

    am.set(AlarmManager.RTC,triggerTime,op);

//    //指定时间重复执行闹钟

//    am.setRepeating(AlarmManager.RTC,triggerTime,2000,op);

  }

  /*

  设置闹钟

  */

  public void startSetAlarmClick(View view)

  {

    //获取系统的闹钟服务

    AlarmManager am= (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    //触发闹钟的时间(毫秒)

    long triggerTime= System.currentTimeMillis()+3000;

    Intent intent=new Intent(this,AlarmReceiver.class);

    PendingIntent op=PendingIntent.getBroadcast(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);

    //启动一次只会执行一次的闹钟

    am.set(AlarmManager.RTC,triggerTime,op);

//    //指定时间重复执行闹钟

//    am.setRepeating(AlarmManager.RTC,triggerTime,2000,op);

  }

}

activity_alarmctivity.xml

  xmlns:tools="http://schemas.android.com/tools"

  android:layout_width="match_parent"

  android:layout_height="match_parent"

  android:paddingBottom="@dimen/activity_vertical_margin"

  android:paddingLeft="@dimen/activity_horizontal_margin"

  android:paddingRight="@dimen/activity_horizontal_margin"

  android:paddingTop="@dimen/activity_vertical_margin"

  tools:context="com.example.haige.alarmmanager.Alarmctivity">

Alarmctivity.java

package com.example.haige.alarmmanager;

import android.app.Activity;

import android.app.AlarmManager;

import android.app.AlertDialog;

import android.app.PendingIntent;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.media.MediaPlayer;

import android.net.Uri;

import android.os.Bundle;

import java.io.IOException;

public class Alarmctivity extends Activity

{

  MediaPlayer mp;

  protected void onCreate(Bundle savedInstanceState)

  {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_alarmctivity);

    mp = new MediaPlayer();

    try {

      mp.setDataSource(this, Uri.parse("/storage/sdcard1/kugou/听力/南拳妈妈-你不像她.mp3"));

      mp.prepare();

    } catch (IOException e) {

      e.printStackTrace();

    }

    mp.setLooping(true);

    mp.start();

    alarmOialog();

  }

  @Override

  protected void onResume() {

    super.onResume();

  }

  @Override

  protected void onDestroy() {

    super.onDestroy();

    if(mp!=null)

    {

      if(mp.isPlaying())

      {

        mp.stop();

      }

      mp.release();

    }

  }

  public void alarmOialog() {

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    builder.setMessage("大哥,大妹子喊你起床啦!");

    builder.setPositiveButton("再来一次", new DialogInterface.OnClickListener() {

      @Override

      public void onClick(DialogInterface dialogInterface, int i) {

        alarm();

        finish();

      }

    });

    builder.setNegativeButton("停止", new DialogInterface.OnClickListener() {

      @Override

      public void onClick(DialogInterface dialogInterface, int i) {

        finish();//关闭窗口

      }

    });

    builder.show();

  }

  private void alarm() {

    //获取系统的闹钟服务

    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    //触发闹钟的时间(毫秒)

    long triggerTime = System.currentTimeMillis() + 5000;

    Intent intent = new Intent(this, Alarmctivity.class);

    PendingIntent op = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    //启动一次只会执行一次的闹钟

    am.set(AlarmManager.RTC, triggerTime, op);

    //指定时间重复执行闹钟

//    am.setRepeating(AlarmManager.RTC,triggerTime,2000,op);

  }

}

广播接收器AlarmReceiver.java

package com.example.haige.alarmmanager;

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) {

    Toast.makeText(context,"起床啦,起床啦!",Toast.LENGTH_SHORT).show();

  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家更多支持扣丁学堂,了解更多详情,请登录扣丁学堂官网,或者关注微信公众号,大量Android在线视频教程我们与你一起分享,一起进步!!!

上一篇 下一篇

猜你喜欢

热点阅读