AndroidはBroadcastReceiverでタイマーを実現

3785 ワード

package net.blogjava.mobile;

import java.util.Calendar;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.util.Log;

public class AlarmReceiver extends BroadcastReceiver
{
	private static int num = 0;  
	@Override
	public void onReceive(Context context, Intent intent)
	{
		SharedPreferences sharedPreferences = context.getSharedPreferences(
				"alarm_record", Activity.MODE_PRIVATE);
		String hour = String.valueOf(Calendar.getInstance().get(
				Calendar.HOUR_OF_DAY));
		String minute = String.valueOf(Calendar.getInstance().get(
				Calendar.MINUTE));
		Log.e("ActionBroadCast", "New Message !" + num++);
		//  XML              value
		String time = sharedPreferences.getString(hour + ":" + minute, null);
		if (time != null) {
			//     
			MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.ring);
			mediaPlayer.start();
		}

	}
}
package net.blogjava.mobile;

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.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;

public class Main extends Activity implements OnClickListener
{
	private TextView tvAlarmRecord;
	private SharedPreferences sharedPreferences;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Button btnAddAlarm = (Button) findViewById(R.id.btnAddAlarm);
		tvAlarmRecord = (TextView) findViewById(R.id.tvAlarmRecord);
		btnAddAlarm.setOnClickListener(this);
		sharedPreferences = getSharedPreferences("alarm_record", Activity.MODE_PRIVATE);

		AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
		Intent intent = new Intent(this, AlarmReceiver.class);
		//    BroadcastReceiver  pendingIntent  
		PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,intent, 0);
		//     , 1      ,5s
		alarmManager.setRepeating(AlarmManager.RTC, 0, 30000, pendingIntent);
		//alarmManager.cancel(pendingIntent);
	}	
	
	@Override
	public void onClick(View v)
	{
		View view = getLayoutInflater().inflate(R.layout.alarm, null);

		final TimePicker timePicker = (TimePicker) view.findViewById(R.id.timepicker);
		timePicker.setIs24HourView(true);
		
		//            
		new AlertDialog.Builder(this).setTitle("      ").setView(view)
				.setPositiveButton("  ", new DialogInterface.OnClickListener()
				{
					@Override
					public void onClick(DialogInterface dialog, int which)
					{
						String timeStr = String.valueOf(timePicker.getCurrentHour())
								+ ":"
								+ String.valueOf(timePicker.getCurrentMinute());
						//         TextView     
						tvAlarmRecord.setText(tvAlarmRecord.getText().toString() + "
" + timeStr); //count++; /*View view2 = new View(Main.this); view2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,1)); view2.setBackgroundColor(Color.RED); LinearLayout linearLayout = (LinearLayout)getLayoutInflater().inflate(R.layout.main, null); linearLayout.addView(view2); */ // sharedPreferences.edit().putString(timeStr, timeStr).commit(); } }).setNegativeButton(" ", null).show(); } }