一:AclockACtivity(主界面) 设定闹钟,删除闹钟,选项菜单
package Fang.Aclock;
import java.util.Calendar;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
public class AclockACtivity extends Activity {
/** Called when the activity is first created. */
TextView setTime1;
TextView setTime2;
TextView setTime3;
Button mButton1;
Button mButton2;
Button mButton3;
Button mButton4;
Button mButton5;
Button mButton6;
String time1String = null;
String time2String = null;
String time3String = null;
String defalutString = "目前无设置";
AlertDialog builder = null;
Calendar c=Calendar.getInstance();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//取得活动的Preferences对象
SharedPreferences settings = getPreferences(Activity.MODE_PRIVATE);
time1String = settings.getString("TIME1", defalutString);
time2String = settings.getString("TIME2", defalutString);
time3String = settings.getString("TIME3", defalutString);
InitButton1();
InitButton2();
InitButton3();
InitButton4();
InitButton5();
InitButton6();
setTime1.setText(time1String);
setTime3.setText(time2String);
setTime2.setText(time3String);
//menu
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, 0, 0,"退出");
menu.add(0, 1, 1,"设置铃声");
//return super.onCreateOptionsMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if(item.getItemId()==0){
builder = new AlertDialog.Builder(AclockACtivity.this)
.setTitle("温馨提示:")
.setMessage("您是否要退出闹钟程序!!!")
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
AclockACtivity.this.finish();
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
builder.dismiss();
}
}).show();
}
if(item.getItemId()==1) {
Intent i=new Intent(AclockACtivity.this,Query.class);
startActivity(i);
}
return super.onOptionsItemSelected(item);
}
public void InitButton1()
{
setTime1=(TextView) findViewById(R.id.setTime1);
mButton1=(Button)findViewById(R.id.mButton1);
mButton1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
c.setTimeInMillis(System.currentTimeMillis());
int mHour=c.get(Calendar.HOUR_OF_DAY);
int mMinute=c.get(Calendar.MINUTE);
new TimePickerDialog(AclockACtivity.this,
new TimePickerDialog.OnTimeSetListener()
{ @Override
public void onTimeSet(TimePicker view,int hourOfDay,
int minute)
{
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY,hourOfDay);
c.set(Calendar.MINUTE,minute);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
Intent intent = new Intent(AclockACtivity.this, CallAlarm.class);
PendingIntent sender=PendingIntent.getBroadcast(
AclockACtivity.this,0, intent, 0);
AlarmManager am;
am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(),
sender
);
String tmpS=format(hourOfDay)+":"+format(minute);
setTime1.setText(tmpS);
//SharedPreferences保存数据,并提交
SharedPreferences time1Share = getPreferences(0);
SharedPreferences.Editor editor = time1Share.edit();
editor.putString("TIME1", tmpS);
editor.commit();
Toast.makeText(AclockACtivity.this,"设置闹钟时间为"+tmpS,
Toast.LENGTH_SHORT)
.show();
}
},mHour,mMinute,true).show();
}
});
//System.out.println("aaaaaaaaaaaaa");
}
public void InitButton2()
{
mButton2=(Button) findViewById(R.id.mButton2);
mButton2.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent(AclockACtivity.this, CallAlarm.class);
PendingIntent sender=PendingIntent.getBroadcast(
AclockACtivity.this,0, intent, 0);
AlarmManager am;
am =(AlarmManager)getSystemService(ALARM_SERVICE);
am.cancel(sender);
Toast.makeText(AclockACtivity.this,"闹钟时间删除",
Toast.LENGTH_SHORT).show();
setTime1.setText("目前无设置");
SharedPreferences time1Share = getPreferences(0);
SharedPreferences.Editor editor = time1Share.edit();
editor.putString("TIME1", "目前无设置");
editor.commit();
}
});
}
public void InitButton3()
{
setTime3=(TextView) findViewById(R.id.setTime5);
mButton3=(Button)findViewById(R.id.mButton5);
mButton3.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
c.setTimeInMillis(System.currentTimeMillis());
int mHour=c.get(Calendar.HOUR_OF_DAY);
int mMinute=c.get(Calendar.MINUTE);
new TimePickerDialog(AclockACtivity.this,
new TimePickerDialog.OnTimeSetListener()
{
public void onTimeSet(TimePicker view,int hourOfDay,
int minute)
{
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY,hourOfDay);
c.set(Calendar.MINUTE,minute);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
Intent intent = new Intent(AclockACtivity.this, CallAlarm.class);
PendingIntent sender=PendingIntent.getBroadcast(
AclockACtivity.this,0, intent, 0);
AlarmManager am;
am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(),
sender
);
String tmpS=format(hourOfDay)+":"+format(minute);
setTime3.setText(tmpS);
//SharedPreferences保存数据,并提交
SharedPreferences time2Share = getPreferences(1);
SharedPreferences.Editor editor = time2Share.edit();
editor.putString("TIME2", tmpS);
editor.commit();
Toast.makeText(AclockACtivity.this,"设置闹钟时间为"+tmpS,
Toast.LENGTH_SHORT)
.show();
}
},mHour,mMinute,true).show();
}
});
}
public void InitButton4()
{
mButton4=(Button) findViewById(R.id.mButton6);
mButton4.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent(AclockACtivity.this, CallAlarm.class);
PendingIntent sender=PendingIntent.getBroadcast(
AclockACtivity.this,0, intent, 0);
AlarmManager am;
am =(AlarmManager)getSystemService(ALARM_SERVICE);
am.cancel(sender);
Toast.makeText(AclockACtivity.this,"闹钟删除",
Toast.LENGTH_SHORT).show();
setTime3.setText("目前无设置");
//SharedPreferences保存数据,并提交
SharedPreferences time2Share = getPreferences(1);
SharedPreferences.Editor editor = time2Share.edit();
editor.putString("TIME2", "目前无设置");
editor.commit();
}
});
}
public void InitButton5()
{
setTime2=(TextView) findViewById(R.id.setTime2);
LayoutInflater factory = LayoutInflater.from(this);
final View setView = factory.inflate(R.layout.timeset,null);
final TimePicker tPicker=(TimePicker)setView
.findViewById(R.id.tPicker);
tPicker.setIs24HourView(true);
final AlertDialog di=new AlertDialog.Builder(AclockACtivity.this)
.setTitle("设置")
.setView(setView)
.setPositiveButton("确定",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
EditText ed=(EditText)setView.findViewById(R.id.mEdit);
int times=Integer.parseInt(ed.getText().toString())
*1000;
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY,tPicker.getCurrentHour());
c.set(Calendar.MINUTE,tPicker.getCurrentMinute());
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);
Intent intent = new Intent(AclockACtivity.this,
CallAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(
AclockACtivity.this,1, intent, 0);
AlarmManager am;
am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(),times,sender);
String tmpS=format(tPicker.getCurrentHour())+":"+
format(tPicker.getCurrentMinute());
String subStr = "设置闹钟时间为"+tmpS+
"开始,重复间隔为"+times/1000+"秒";
setTime2.setText("设置闹钟时间为"+tmpS+
"开始,重复间隔为"+times/1000+"秒");
//SharedPreferences保存数据,并提交
SharedPreferences time3Share = getPreferences(2);
SharedPreferences.Editor editor = time3Share.edit();
editor.putString("TIME3", subStr);
editor.commit();
Toast.makeText(AclockACtivity.this,"设置闹钟为"+tmpS+
"开始,重复间隔为"+times/1000+"秒",
Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
}).create();
mButton5=(Button) findViewById(R.id.mButton3);
mButton5.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
c.setTimeInMillis(System.currentTimeMillis());
tPicker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY));
tPicker.setCurrentMinute(c.get(Calendar.MINUTE));
di.show();
}
});
}
public void InitButton6()
{
mButton6=(Button) findViewById(R.id.mButton4);
mButton6.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent(AclockACtivity.this, CallAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(
AclockACtivity.this,1, intent, 0);
AlarmManager am;
am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.cancel(sender);
Toast.makeText(AclockACtivity.this,"闹钟时间删除",
Toast.LENGTH_SHORT).show();
setTime2.setText("目前无设置");
//SharedPreferences保存数据,并提交
SharedPreferences time3Share = getPreferences(2);
SharedPreferences.Editor editor = time3Share.edit();
editor.putString("TIME3", "目前无设置");
editor.commit();
}
});
}
//
/* @Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
builder = new AlertDialog.Builder(AclockACtivity.this)
.setTitle("温馨提示:")
.setMessage("您是否要退出闹钟程序!!!")
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
AclockACtivity.this.finish();
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
builder.dismiss();
}
}).show();
}
return true;
}*/
private String format(int x)
{
String s=""+x;
if(s.length()==1) s="0"+s;
return s;
}
}
二: AlarmAlert 响铃 并弹出表格 接听器启动
package Fang.Aclock;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import android.app.Activity;
import android.app.TabActivity;
import android.content.Context;
import android.content.SharedPreferences.Editor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class AlarmAlert extends Activity {
public static MediaPlayer player=new MediaPlayer();
public static EditText e1 = null;
public static String path="/sdcard/aaaaaa.mp3";
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);setContentView(R.layout.show);
Button b1=(Button) findViewById(R.id.b1);
Button b2=(Button) findViewById(R.id.b2);
try{
player.reset();
player.setDataSource(path);
player.prepare();
player.start();
}catch(IOException e){
e.printStackTrace();
}
player.setOnCompletionListener(
new MediaPlayer.OnCompletionListener()
{
// @Override
/*覆盖文件播出完毕事件*/
public void onCompletion(MediaPlayer arg0)
{
try
{
player.start();
System.out.println("循环播放!");
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
e1=(EditText)findViewById(R.id.edittext1);
Log.d("tag", "aaaaaaaaaaaaaaaaaaaaaaaa");
//System.out.println("stop"+" "+CallAlarm.player.isPlaying());
b1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//写入文件
String c=e1.getText().toString();
try{
File sdDir=Environment.getExternalStorageDirectory();
System.out.println(sdDir.toString());
save(c);
Toast.makeText(AlarmAlert.this, "保存成功", 5).show();
}catch(Exception a){Toast.makeText(AlarmAlert.this, "保存失败", 6).show();
a.printStackTrace();}
}
});
e1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("点ddddddd");
player.stop();
}
});
b2.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
e1.setText("");
}
});
}
protected void save( String c) throws Exception {
// TODO Auto-generated method stub
//FileOutputStream out=openFileOutput(s,Context.MODE_APPEND);
//DataOutputStream dou=new DataOutputStream(out);
//dou.writeChars(c);
//dou.close();
boolean sdCardExit=Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
if(sdCardExit){
File sdDir=Environment.getExternalStorageDirectory();
FileWriter fw=new FileWriter( sdDir.toString()+"/fangchao.txt", true);
Calendar calendar1=Calendar.getInstance();
Date d=calendar1.getTime();
fw.write(d.toString()+" "+c);
Log.d("sadsae", "房超");
fw.write("\r\n");
fw.close();
}
}
}
三. CallAlarm
接听器启动AlarmAlert
package Fang.Aclock;
import java.io.IOException;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
public class CallAlarm extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
Log.d("aaa", "abc");
System.out.println("OnReceive");
Intent i = new Intent(context, AlarmAlert.class);
Bundle bundleRet = new Bundle();
bundleRet.putString("STR_CALLER", "");
i.putExtras(bundleRet);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
/*player.reset();
try {
player.setDataSource(path);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
player.prepare();
} catch (IllegalStateException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
player.start();
}*/
}
}
四.Query 从文件中查找音频文件并显示在listview中
package Fang.Aclock;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.app.ListActivity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class Query extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
this.setTitle("选择铃声");
final ContentResolver mResolver = this.getContentResolver();
Cursor cursor = mResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,null,null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
//startManagingCursor(cursor);//交由Activity管理 这样Cursor的生命周期和Activity便能够自动同步,省去自己手动管理Cursor。
ListView list=new ListView(this);
//String path=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
/*String [] from={"music"};
int [] to={R.id.text0};
SimpleCursorAdapter adapter=new SimpleCursorAdapter(getApplicationContext(),R.layout.row,cursor,from,to);
ListView listview =getListView();
listview.setAdapter(adapter);*/
// while(cursor.moveToNext()){
// String path=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
// String tilte = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
//
// }
for (int i = 0; i < cursor.getCount(); i++)
{ cursor.moveToNext();
// 找到歌曲标题和总时间对应的列索引
int indexTitle = cursor.getColumnIndex(MediaStore.Audio.AudioColumns.TITLE);
int indexALBUM = cursor .getColumnIndex(MediaStore.Audio.AudioColumns.ALBUM);
String strTitle = cursor.getString(indexTitle);
HashMap<String, Object> nowMap = new HashMap<String, Object>();
nowMap.put("歌曲名:", strTitle );
data.add(nowMap);
}
// data.add("aaaaaaa");
list.setAdapter(new ArrayAdapter<Map<String, Object>> (this, android.R.layout.simple_expandable_list_item_1,data));
setContentView(list);
list.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
final int temp2=arg2;
Cursor cursor = mResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,null,null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
cursor.moveToPosition(temp2);
if(cursor.isAfterLast()) finish();
int indexpath = cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DATA);
String strpath = cursor.getString(indexpath);
AlarmAlert.path=strpath;
Toast.makeText(getApplicationContext(), "铃声设置成功", 6).show();
System.out.println(strpath);
}
});
}
}