北京联合大学实验报告课程(项目)名称:移动互联学院:自动化专业:自动化班级:自控 1103B 学号:************* 姓名:张淑敏成绩:2015年1月18日一、任务与目的设计一个闹钟(计时结束后可设置为提示窗、播放音乐及振动)。
1.构建一个定时应用2.定时时间到后可以显示提示框3.同时可以播放指定的音乐4.也可选择音乐与震动一起二、原理(1)闹钟设置:在Android中可以通过AlarmManager来实现闹钟,AlarmManager类是专门用来设定在某个指定的时间去完成指定的事件。
AlarmManager提供了访问系统警报的服务,只要在程序中设置了警报服务,AlarmManager就会通过onReceive()方法去执行这些事件,就算系统处于待机状态,同样不会影响运行。
可以通过Context.getSystemService方法来获得服务。
要实现闹钟,首先需要创建一个继承自BroadcastReceive的类,实现onReceive方法来接收这个Alarm服务,然后通过建立Intent和PendingIntent 连接来调用Alarm组件。
(2)播放音乐:MediaPlayer类用来播放音频、视频和流媒体,MediaPlayer包含了Audio 和Video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。
任何MediaPlayer对象都必须先处于准备状态,然后才开始播放。
(3)震动:开始震动有两个接口1 . vibrator.vibrate(2000);//震动指定时间,数据类型long,单位为毫秒,一毫秒为1/1000秒2. vibrator.vibrate(new long[]{100,10,100,1000}, -1);//按照指定的模式去震动。
数组参数意义:第一个参数为等待指定时间后开始震动,震动时间为第二个参数。
后边的参数依次为等待震动和震动的时间第二个参数为重复次数,-1为不重复,0为一直震动取消震动vibrator.cancel();//取消震动,立即停止震动震动为一直震动的话,如果不取消震动,就算退出,也会一直震动最重要的,增加权限,否则运行时出错<uses-permissionandroid:name="android.permission.VIBRATE"/>三、内容与步骤(1)闹钟设置创建Activity01.java程序:package com.yarin.android.Examples_07_07;import java.util.Calendar;import android.app.Activity;import android.app.AlarmManager;import android.app.PendingIntent;import android.app.TimePickerDialog;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.TimePicker;public class Activity01 extends Activity{Button mButton1;Button mButton2;TextView mTextView;Calendar calendar;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.main);calendar=Calendar.getInstance();mTextView=(TextView)findViewById(R.id.TextView01);mButton1=(Button)findViewById(R.id.Button01);mButton2=(Button)findViewById(R.id.Button02);mButton1.setOnClickListener(new View.OnClickListener(){public void onClick(View v){c alendar.setTimeInMillis(System.currentTimeMillis());int mHour=calendar.get(Calendar.HOUR_OF_DAY);int mMinute=calendar.get(Calendar.MINUTE);new TimePickerDialog(Activity01.this,new TimePickerDialog.OnTimeSetListener(){public void onTimeSet(TimePicker view,int hourOfDay,int minute){calendar.setTimeInMillis(System.currentTimeMillis());calendar.set(Calendar.HOUR_OF_DAY,hourOfDay);calendar.set(Calendar.MINUTE,minute);calendar.set(Calendar.SECOND,0);calendar.set(LISECOND,0);/* 建立Intent和PendingIntent,来调用目标组件 */Intent intent = new Intent(Activity01.this, AlarmReceiver.class);PendingIntentpendingIntent=PendingIntent.getBroadcast(Activity01.this,0, intent, 0);AlarmManager am;/* 获取闹钟管理的实例 */am = (AlarmManager)getSystemService(ALARM_SERVICE);/* 设置闹钟 */am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);/* 设置周期闹 */am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis() + (10*1000), (24*60*60*1000), pendingIntent);String tmpS="设置闹钟时间为"+format(hourOfDay)+":"+format(minute);mTextView.setText(tmpS);}},mHour,mMinute,true).show();}});mButton2.setOnClickListener(new View.OnClickListener(){public void onClick(View v){Intent intent = new Intent(Activity01.this, AlarmReceiver.class);PendingIntentpendingIntent=PendingIntent.getBroadcast(Activity01.this,0, intent, 0);AlarmManager am;/* 获取闹钟管理的实例 */am =(AlarmManager)getSystemService(ALARM_SERVICE);/* 取消 */am.cancel(pendingIntent);mTextView.setText("闹钟已取消!");}});}/* 格式化字符串(7:3->07:03) */private String format(int x){String s = "" + x;if (s.length() == 1)s = "0" + s;return s;}}(2)播放音乐创建Activity02.java程序:package com.yarin.android.Examples_07_07;import java.io.File;import java.io.FilenameFilter;import java.io.IOException;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.app.ListActivity;import android.content.DialogInterface;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ImageButton;public class Activity02 extends Activity{/* MediaPlayer对象 */public MediaPlayer mMediaPlayer = null;protected Dialog mVibrator;/* 当前播放歌曲的索引 */// private int currentListItme = 0;/* 音乐的路径 */private static final String MUSIC_PATH = new String("/sdcard/Music/001.mp3");/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.main);/* 构建MediaPlayer对象 */mMediaPlayer = new MediaPlayer();playMusic(MUSIC_PATH);new AlertDialog.Builder(Activity02.this).setTitle("闹钟").setPositiveButton("确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg01) {// TODO Auto-generated method stubmMediaPlayer.stop();mMediaPlayer.release();mVibrator.cancel();Activity02.this.finish();}}).create().show();;}private void playMusic(String path){try{/* 重置MediaPlayer */mMediaPlayer.reset();/* 设置要播放的文件的路径 */mMediaPlayer.setDataSource(path);/* 准备播放 */mMediaPlayer.prepare();/* 开始播放 */mMediaPlayer.start();mMediaPlayer.setOnCompletionListener(new OnCompletionListener(){public void onCompletion(MediaPlayer arg0){//播放完成一首之后进行下一首}});}catch (IOException e){}}}(3)调用播放音乐和启用震动的程序创建AlarmReceiver.java 程序:package com.yarin.android.Examples_07_07;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Vibrator;import android.view.View;import android.widget.Toast;public class AlarmReceiver extends BroadcastReceiver{public void onReceive(Context context, Intent intent){Toast.makeText(context, "你设置的闹钟时间到了", Toast.LENGTH_LONG).show();Vibrator mVibrator;mVibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);mVibrator.vibrate(2000);Intent i= new Intent(context,Activity02.class);i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i);}}(4)添加停止程序new AlertDialog.Builder(Activity02.this).setTitle("闹钟").setPositiveButton("确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg01) {// TODO Auto-generated method stubmMediaPlayer.stop();mMediaPlayer.release();mVibrator.cancel();Activity02.this.finish();}}).create().show();;}五、结论实现闹钟设计,可以设定闹钟时间,到达设定时间后震动并播放音乐,会出现确定按钮,电机确定按钮,会停止播放音乐。