要想实现闹铃功能的话,就必然不能少了
MediaPlayer
这个类,通过媒体播放音乐
一个简单的界面布局:
<LinearLayout 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" >
<Button
android:id="@+id/btn_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设置闹钟" />
</LinearLayout>
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/btn_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设置闹钟" />
</LinearLayout>
主要分为2个类:
1、MainActivity
2、AlarmActivity
----------------------------------------------------------------------------------------------------
1、MainActivity主要用来显示界面
package com.example.alarmdemo;
//以下是所需要导入的包
import java.util.Calendar;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TimePicker;
public class MainActivity extends Activity {
private Button btn_setting;
private AlarmManager aManager;//闹钟管理类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_setting = (Button) findViewById(R.id.btn_setting);
btn_setting.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 得到系统当前时间
Calendar currentCalendar = Calendar.getInstance();
/*
* 参数一:当前activity实例对象
* 参数二:确定好修改时间后的响应事件:TimePickerDialog
* 参数三:弹出对话框中显示的小时
* 参数四:弹出对话框中小时的分钟
*/
TimePickerDialog dialog = new TimePickerDialog(
MainActivity.this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view,
int hourOfDay, int minute) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
// 设置c对象的小时和分钟
c.set(Calendar.HOUR, hourOfDay);
c.set(Calendar.MINUTE, minute);
//以下是所需要导入的包
import java.util.Calendar;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TimePicker;
public class MainActivity extends Activity {
private Button btn_setting;
private AlarmManager aManager;//闹钟管理类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_setting = (Button) findViewById(R.id.btn_setting);
btn_setting.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 得到系统当前时间
Calendar currentCalendar = Calendar.getInstance();
/*
* 参数一:当前activity实例对象
* 参数二:确定好修改时间后的响应事件:TimePickerDialog
* 参数三:弹出对话框中显示的小时
* 参数四:弹出对话框中小时的分钟
*/
TimePickerDialog dialog = new TimePickerDialog(
MainActivity.this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view,
int hourOfDay, int minute) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
// 设置c对象的小时和分钟
c.set(Calendar.HOUR, hourOfDay);
c.set(Calendar.MINUTE, minute);
//从当前界面跳转到音乐播放服务的activity
Intent intent = new Intent(MainActivity.this,
AlarmActivity.class);
PendingIntent pendingIntent = PendingIntent
.getActivity(MainActivity.this, 0,
intent, 0);
aManager.set(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(), pendingIntent);
}
}, currentCalendar.get(Calendar.HOUR_OF_DAY),
currentCalendar.get(Calendar.MINUTE), false);
dialog.show();
}
});
aManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE);//得到系统默认服务
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
AlarmActivity.class);
PendingIntent pendingIntent = PendingIntent
.getActivity(MainActivity.this, 0,
intent, 0);
aManager.set(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(), pendingIntent);
}
}, currentCalendar.get(Calendar.HOUR_OF_DAY),
currentCalendar.get(Calendar.MINUTE), false);
dialog.show();
}
});
aManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE);//得到系统默认服务
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
---------------------------------------------------------------------------------------------------
2、音乐播放类
package com.example.alarmdemo;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.media.MediaPlayer;
import android.os.Bundle;
public class AlarmActivity extends Activity {
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(mediaPlayer==null){
mediaPlayer=MediaPlayer.create(AlarmActivity.this, R.raw.sgos );//这是放的是所要播放音乐的资源文件
mediaPlayer.start();
}
Builder bd=new AlertDialog.Builder(AlarmActivity.this);
bd.setTitle("铃响了……");
bd.setMessage("起床了,快点");
bd.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(mediaPlayer!=null&&mediaPlayer.isPlaying()==true){
mediaPlayer.stop();
mediaPlayer=null;
//结束当前activity
AlarmActivity.this.finish();
}
}
});
bd.show();
}
}
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.media.MediaPlayer;
import android.os.Bundle;
public class AlarmActivity extends Activity {
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(mediaPlayer==null){
mediaPlayer=MediaPlayer.create(AlarmActivity.this, R.raw.sgos );//这是放的是所要播放音乐的资源文件
mediaPlayer.start();
}
Builder bd=new AlertDialog.Builder(AlarmActivity.this);
bd.setTitle("铃响了……");
bd.setMessage("起床了,快点");
bd.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(mediaPlayer!=null&&mediaPlayer.isPlaying()==true){
mediaPlayer.stop();
mediaPlayer=null;
//结束当前activity
AlarmActivity.this.finish();
}
}
});
bd.show();
}
}
通过以上的代码可以实现闹钟定时响铃的功能
这些都是本人在学习时候一点点心得