activity_main.xml
---------------------------
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:clickable="false"
tools:context="com.example.anshu.alarm.MainActivity">
<TimePicker
android:id="@+id/alarmTimePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>
<Button
android:id="@+id/start_alarm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:onClick="startTimer"
android:layout_below="@+id/alarmTimePicker"
android:clickable="true"
android:text="Turn on" />
<Button
android:id="@+id/stop_alarm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:onClick="cancelTimer"
android:layout_below="@+id/alarmTimePicker"
android:clickable="true"
android:text="Turn off" />
<TextView
android:id="@+id/alarmText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/start_alarm"
android:layout_centerHorizontal="true"
android:text="show" />
<EditText
android:id="@+id/edittxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/alarmText"
android:layout_toEndOf="@+id/start_alarm"
android:layout_toRightOf="@+id/start_alarm"
android:ems="10"
android:inputType="textPersonName"
android:text="Name" />
</RelativeLayout>
MainActivity.java
package com.example.anshu.alarm;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
//public String str ;
public static String str;
AlarmManager alarmManager;
private PendingIntent pending_intent;
private TimePicker alarmTimePicker;
private TextView alarmTextView;
EditText string;
private AlarmReceiver alarm;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.context = this;
alarmTextView = (TextView) findViewById(R.id.alarmText);
final Intent myIntent = new Intent(this.context, AlarmReceiver.class);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
final Calendar calendar = Calendar.getInstance();
alarmTimePicker = (TimePicker) findViewById(R.id.alarmTimePicker);
string = findViewById(R.id.edittxt);
str = string.getText().toString();
Button start_alarm= (Button) findViewById(R.id.start_alarm);
start_alarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calendar.add(Calendar.SECOND, 3);
final int hour = alarmTimePicker.getCurrentHour();
final int minute = alarmTimePicker.getCurrentMinute();
Log.e("MyActivity", "In the receiver with " + hour + " and " + minute);
setAlarmText("You clicked a " + hour + " and " + minute);
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentHour());
calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentMinute());
myIntent.putExtra("extra", "yes");
myIntent.putExtra("msg",string.getText().toString());
pending_intent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pending_intent);
setAlarmText("Alarm set to " + hour + ":" + minute);
}
});
Button stop_alarm= (Button) findViewById(R.id.stop_alarm);
stop_alarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int min = 1;
int max = 9;
Random r = new Random();
int random_number = r.nextInt(max - min + 1) + min;
Log.e("random number is ", String.valueOf(random_number));
myIntent.putExtra("extra", "no");
sendBroadcast(myIntent);
alarmManager.cancel(pending_intent);
setAlarmText("Alarm canceled");
}
});
}
public void setAlarmText(String alarmText) {
alarmTextView.setText(alarmText);
}
}
---------------------------------------------------------------------------------------------------------------
AlarmReceiver.java
package com.example.anshu.alarm;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
/**
* Created by Anshu on 12/12/2017.
*/
class AlarmReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getExtras().getString("extra");
String msg = intent.getExtras().getString("msg");
Log.e("MyActivity", "In the receiver with " + state);
Intent serviceIntent = new Intent(context,RingtonePlayingService.class);
serviceIntent.putExtra("extra", state);
serviceIntent.putExtra("msg",msg);
context.startService(serviceIntent);
}
}
---------------------------------------------------------------------------------------------------------------------
RingtonePlayingService.java
package com.example.anshu.alarm;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.util.Log;
import java.util.Random;
/**
* Created by Anshu on 12/12/2017.
*/
class RingtonePlayingService extends Service {
private boolean isRunning;
private Context context;
MediaPlayer mMediaPlayer;
private int startId;
@Nullable
@Override
public IBinder onBind(Intent intent) {
Log.e("MyActivity", "In the Richard service");
return null;
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
public int onStartCommand(Intent intent, int flags, int startId) {
final NotificationManager mNM = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Intent intent1 = new Intent(this.getApplicationContext(), MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);
String msg = intent.getExtras().getString("msg");
Notification mNotify = new Notification.Builder(this)
//.setContentTitle("This is demo" + "!")
.setContentText(msg)
.setSmallIcon(R.drawable.ic_launcher_background)
.setContentIntent(pIntent)
.setAutoCancel(true)
.build();
String state = intent.getExtras().getString("extra");
Log.e("what is going on here ", state);
assert state != null;
switch (state) {
case "no":
startId = 0;
break;
case "yes":
startId = 1;
break;
default:
startId = 0;
break;
}
if (!this.isRunning && startId == 1) {
Log.e("if there was not sound ", " and you want start");
int min = 1;
int max = 9;
Random r = new Random();
int random_number = r.nextInt(max - min + 1) + min;
Log.e("random number is ", String.valueOf(random_number));
if (random_number == 1) {
mMediaPlayer = MediaPlayer.create(this, R.raw.ring);
} else if (random_number == 2) {
mMediaPlayer = MediaPlayer.create(this, R.raw.aaa);
} else if (random_number == 3) {
mMediaPlayer = MediaPlayer.create(this, R.raw.song);
} else {
mMediaPlayer = MediaPlayer.create(this, R.raw.ring);
}
mMediaPlayer.start();
mNM.notify(0, mNotify);
this.isRunning = true;
this.startId = 0;
} else if (!this.isRunning && startId == 0) {
Log.e("if there was not sound ", " and you want end");
this.isRunning = false;
this.startId = 0;
} else if (this.isRunning && startId == 1) {
Log.e("if there is sound ", " and you want start");
this.isRunning = true;
this.startId = 0;
} else {
Log.e("if there is sound ", " and you want end");
mMediaPlayer.stop();
mMediaPlayer.reset();
this.isRunning = false;
this.startId = 0;
}
Log.e("MyActivity", "In the service");
return START_NOT_STICKY;
}
public void onDestroy() {
Log.e("JSLog", "on destroy called");
super.onDestroy();
this.isRunning = false;
}
}
0 comments:
Post a Comment