Sunday, 10 August 2014

Weekly Repeat Alarm


package com.setweeklyrepeatalarm;

import java.util.Calendar;

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;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.CheckBox;

import android.widget.CompoundButton;

import android.widget.CompoundButton.OnCheckedChangeListener;

import android.widget.TextView;

import android.widget.TimePicker;

import android.widget.TimePicker.OnTimeChangedListener;

import android.widget.Toast;

public class AlarmTestActivity extends Activity implements
OnCheckedChangeListener {

private Context ctx;

private PendingIntent operation, operation1, operation2, operation3,
operation4, operation5, operation6;

private CheckBox chk_monday, chk_tuesday, chk_wednesday, chk_thursday,
chk_friday, chk_sat, chk_sunday;

private AlarmManager alarmManager;

private Button btnSetAlarm, btnQuitAlarm;

private TextView alarmTitle;

private Intent i;

private TimePicker tpTime;

private boolean timerflag = false;

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ctx = this;

/**
* This intent invokes the activity DemoActivity, which in turn opens
* the AlertDialog window
*/

i = new Intent(AlarmTestActivity.this, AlarmPopup.class);

/** Getting a reference to the System Service ALARM_SERVICE */

alarmManager = (AlarmManager) getBaseContext().getSystemService(
ALARM_SERVICE);

setMapping();

setListener();

}

private void setListener() {

btnSetAlarm.setOnClickListener(setClickListener);

btnQuitAlarm.setOnClickListener(quitClickListener);

chk_monday.setOnCheckedChangeListener(this);

chk_tuesday.setOnCheckedChangeListener(this);

chk_wednesday.setOnCheckedChangeListener(this);

chk_thursday.setOnCheckedChangeListener(this);

chk_friday.setOnCheckedChangeListener(this);

chk_sat.setOnCheckedChangeListener(this);

chk_sunday.setOnCheckedChangeListener(this);

tpTime.setOnTimeChangedListener(new OnTimeChangedListener() {

public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {

// TODO Auto-generated method stub

timerflag = true;

}

});

}

OnClickListener quitClickListener = new OnClickListener() {

public void onClick(View v) {

finish();

}

};

private void setMapping() {

tpTime = (TimePicker) findViewById(R.id.tp_time);

alarmTitle = (TextView) findViewById(R.id.soundtv);

alarmTitle.setText("Sound : " + "AlarmTone Name");

btnSetAlarm = (Button) findViewById(R.id.btn_set_alarm);

btnQuitAlarm = (Button) findViewById(R.id.btn_quit_alarm);

chk_monday = (CheckBox) findViewById(R.id.chk_monday);

chk_tuesday = (CheckBox) findViewById(R.id.chk_tuesday);
chk_wednesday = (CheckBox) findViewById(R.id.chk_wednesday);

chk_thursday = (CheckBox) findViewById(R.id.chk_thursday);

chk_friday = (CheckBox) findViewById(R.id.chk_friday);

chk_sat = (CheckBox) findViewById(R.id.chk_sat);

chk_sunday = (CheckBox) findViewById(R.id.chk_sunday);

}

OnClickListener setClickListener = new OnClickListener() {

public void onClick(View v) {

if (!timerflag) {

Toast.makeText(ctx, "Please first select time",
Toast.LENGTH_LONG).show();

}

else {

Toast.makeText(ctx, "Alarm set successfully", Toast.LENGTH_LONG)
.show();

finish();

}

}

};

public void stopAlaram(Context ctx, Intent intent)

{

PendingIntent.getBroadcast(ctx, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT).cancel();

Toast.makeText(ctx, "Cancel!", Toast.LENGTH_LONG).show();

}

public void forday(int week, PendingIntent pendingIntent) {

Calendar calSet = Calendar.getInstance();

int hour = tpTime.getCurrentHour();

int minute = tpTime.getCurrentMinute();

calSet.set(Calendar.DAY_OF_WEEK, week);

calSet.set(Calendar.HOUR_OF_DAY, hour);

calSet.set(Calendar.MINUTE, minute);

calSet.set(Calendar.SECOND, 0);

calSet.set(Calendar.MILLISECOND, 0);

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calSet.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7,
pendingIntent);

}

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

// TODO Auto-generated method stub

if (timerflag) {

if (buttonView == chk_monday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 2);

i.putExtras(bundle);

operation = PendingIntent.getActivity(getBaseContext(), 0,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(2, operation);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation);

}

}

else if (buttonView == chk_tuesday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 3);

i.putExtras(bundle);

operation1 = PendingIntent.getActivity(getBaseContext(), 1,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(3, operation1);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation1);

}

}

else if (buttonView == chk_wednesday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 4);

i.putExtras(bundle);

operation2 = PendingIntent.getActivity(getBaseContext(), 2,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(4, operation2);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation2);

}

}

else if (buttonView == chk_thursday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 5);

i.putExtras(bundle);

operation3 = PendingIntent.getActivity(getBaseContext(), 3,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(5, operation3);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation3);

}

}

else if (buttonView == chk_friday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 6);

i.putExtras(bundle);

operation4 = PendingIntent.getActivity(getBaseContext(), 4,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(6, operation4);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation4);

}

}

else if (buttonView == chk_sat) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 7);

i.putExtras(bundle);

operation5 = PendingIntent.getActivity(getBaseContext(), 5,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(7, operation5);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation5);

}

}

else if (buttonView == chk_sunday) {

if (isChecked) {

Bundle bundle = new Bundle();

bundle.putInt("Selected_day", 1);

i.putExtras(bundle);

operation6 = PendingIntent.getActivity(getBaseContext(), 6,
i, Intent.FLAG_ACTIVITY_NEW_TASK);

forday(1, operation6);

}

else {

AlarmManager alarmManager = (AlarmManager) ctx
.getSystemService(ALARM_SERVICE);

alarmManager.cancel(operation6);

}

}

} else {

buttonView.setChecked(false);

Toast.makeText(ctx, "Please first select time", Toast.LENGTH_LONG)
.show();

}

}

}

------------------------------------------------------------------------------------------------------------


package com.setweeklyrepeatalarm;

import java.util.Calendar;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class AlarmPopup extends Activity implements OnClickListener {

private TextView alarmHeading;
private Button closebtn, snooze, dismiss;
private Context ctx;
MediaPlayer mp;
private int selected_day;
private Bundle bundle;
private AssetFileDescriptor descriptor;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.alarm_popup);
ctx = this;
try {
bundle = this.getIntent().getExtras();
selected_day = bundle.getInt("Selected_day");

} catch (Exception e) {
e.printStackTrace();
}

Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK);
if (selected_day < day && bundle != null) {
this.finish();
return;
} else {
try {
/*mp = new MediaPlayer();
mp.reset();

descriptor = getResources().openRawResourceFd(R.raw.msg);

mp.reset();
mp.setDataSource(descriptor.getFileDescriptor(),
descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
mp.prepare();
mp.start();
mp.release();
mp.setLooping(true);*/
mp = MediaPlayer.create(ctx, R.raw.msg);
mp.start();
} catch (Exception e) {
e.printStackTrace();
}
}
alarmHeading = (TextView) findViewById(R.id.tv_name_lang);
closebtn = (Button) findViewById(R.id.btncloselang);
snooze = (Button) findViewById(R.id.btn_eng);
dismiss = (Button) findViewById(R.id.btn_hindi);

alarmHeading.setText("Alarm");
snooze.setText("Snooze");
dismiss.setText("Dismiss");

closebtn.setOnClickListener(this);
snooze.setOnClickListener(this);
dismiss.setOnClickListener(this);

}

@Override
public void onBackPressed() {
// TODO Auto-generated method stub

AlarmTestActivity obj = new AlarmTestActivity();
obj.stopAlaram(ctx, this.getIntent());
mp.stop();
mp.release();
finish();

// super.onBackPressed();
}

public void onClick(View v) {
// TODO Auto-generated method stub
if (v == dismiss || v == closebtn) {
AlarmTestActivity obj = new AlarmTestActivity();
obj.stopAlaram(ctx, this.getIntent());
mp.stop();
mp.release();
finish();
} else if (v == snooze) {
Intent intent = new Intent();
intent.setClass(this, AlarmPopup.class);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Bundle bundle = new Bundle();
bundle.putInt("Selected_day", selected_day);
intent.putExtras(bundle);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 101,
intent, Intent.FLAG_ACTIVITY_NEW_TASK);
am.set(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + 5 * 1000 * 60, pendingIntent);

// Intent i = new Intent(this, AlarmPopup.class);
// PendingIntent pendingIntent =
// PendingIntent.getActivity(getBaseContext(), 101, i,
// Intent.FLAG_ACTIVITY_NEW_TASK);
// AlarmManager alarmManager = (AlarmManager)
// getBaseContext().getSystemService(ALARM_SERVICE);
// alarmManager.set(AlarmManager.RTC_WAKEUP,1000, pendingIntent);
mp.stop();
mp.release();
finish();
}
}
}


------------------------------------------------------------------------------------------------------------


main_activity

- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#111111">
  <TextView android:id="@+id/soundtv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sound :" android:textColor="#000000" android:textSize="20sp" android:textStyle="bold" android:typeface="serif" /> 
  <View android:id="@+id/view1" android:layout_width="fill_parent" android:layout_height="1dp" android:layout_below="@+id/soundtv" android:background="#ffffff" /> 
  <TimePicker android:id="@+id/tp_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/view1" /> 
  <View android:id="@+id/view2" android:layout_width="fill_parent" android:layout_height="1dp" android:layout_below="@+id/tp_time" android:background="#ffffff" /> 
  <TextView android:id="@+id/alarmrepeattv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/view2" android:text="Alarm Repeat" android:textColor="#000000" android:textSize="20sp" android:textStyle="bold" android:typeface="serif" /> 
- <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@+id/rlayout" android:background="@android:color/white" android:layout_below="@+id/alarmrepeattv">
- <LinearLayout android:id="@+id/weekdayll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical">
  <CheckBox android:id="@+id/chk_monday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Monday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_tuesday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tuesday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_wednesday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Wednesday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_thursday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Thursday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_friday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Friday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_sat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Saturday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <CheckBox android:id="@+id/chk_sunday" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sunday" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  </LinearLayout>
  </ScrollView>
- <RelativeLayout android:id="@+id/rlayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:gravity="center_horizontal">
  <View android:id="@+id/view3" android:layout_width="fill_parent" android:layout_height="1dp" android:background="#ffffff" /> 
  <Button android:id="@+id/btn_set_alarm" android:layout_width="100dip" android:layout_height="50dip" android:layout_below="@+id/view3" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:padding="5dp" android:text="Set Alarm" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  <Button android:id="@+id/btn_quit_alarm" android:layout_width="100dp" android:layout_height="50dp" android:layout_alignParentRight="true" android:layout_below="@+id/view3" android:layout_marginRight="10dp" android:layout_marginTop="5dp" android:padding="5dp" android:text="Cancle" android:textColor="#000000" android:textStyle="bold" android:typeface="serif" /> 
  </RelativeLayout>
  </RelativeLayout>
------------------------------------------------------------------------------------------------------------

alarm popup.xml


  <?xml version="1.0" encoding="utf-8" ?> 
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="#00000000">
- <RelativeLayout android:id="@+id/main_iv" android:layout_width="240dp" android:layout_height="45dp" android:background="@android:color/white">
- <RelativeLayout android:id="@+id/sub_main" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#0000FF">
  <TextView android:id="@+id/tv_name_lang" android:layout_width="fill_parent" android:layout_height="60dip" android:layout_toRightOf="@+id/image" android:gravity="center" android:text="Choose Language" android:textColor="#750303" android:textSize="20sp" android:textStyle="bold" /> 
  <Button android:id="@+id/btncloselang" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:background="@drawable/ic_launcher" android:gravity="top" android:tag="btncloselang" /> 
  </RelativeLayout>
  </RelativeLayout>
- <RelativeLayout android:layout_width="240dp" android:layout_height="wrap_content" android:layout_below="@+id/main_iv" android:background="@android:color/white">
  <Button android:id="@+id/btn_eng" android:layout_width="240dp" android:layout_height="50dp" android:background="#FF0000" android:gravity="center" android:text="English" android:textColor="#750303" android:textSize="18sp" android:textStyle="bold" /> 
  <Button android:id="@+id/btn_hindi" android:layout_width="240dp" android:layout_height="50dp" android:layout_below="@+id/btn_eng" android:background="#00FF00" android:text="" android:textColor="#750303" android:textSize="18sp" android:textStyle="bold" /> 
  </RelativeLayout>
  </RelativeLayout>

------------------------------------------------------------------------------------------------------------

manifest.xml 


<?xml version="1.0" encoding="utf-8" ?> 
- <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.setweeklyrepeatalarm" android:versionCode="1" android:versionName="1.0">
  <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> 
  <uses-permission android:name="android.permission.INTERNET" /> 
  <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
  <uses-permission android:name="android.permission.VIBRATE" /> 
  <uses-permission android:name="android.permission.WAKE_LOCK" /> 
  <uses-feature android:name="android.hardware.camera" /> 
  <uses-feature android:name="android.hardware.camera.autofocus" /> 
  <uses-permission android:name="android.permission.CAMERA" /> 
  <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
  <uses-permission android:name="android.permission.WAKE_LOCK" /> 
- <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme">
- <activity android:name="com.setweeklyrepeatalarm.AlarmTestActivity" android:label="@string/app_name">
- <intent-filter>
  <action android:name="android.intent.action.MAIN" /> 
  <category android:name="android.intent.category.LAUNCHER" /> 
  </intent-filter>
  </activity>
  <activity android:name="com.setweeklyrepeatalarm.AlarmPopup" android:screenOrientation="portrait" /> 
  </application>
  </manifest>



No comments:

Post a Comment