import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class AlarmReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
String state = intent.getExtras().getString("extra");
Log.e("MyActivity", "In the receiver with " + state);
Intent serviceIntent = new Intent(context,RingtonePlayingService.class);
serviceIntent.putExtra("extra", state);
context.startService(serviceIntent);
}
}
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;
public 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)
@Override public int onStartCommand(Intent intent, int flags, int startId)
{
final NotificationManager mNM = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Intent intent1 = new Intent(this.getApplicationContext(), Mainalarm.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0);
Notification mNotify = new Notification.Builder(this)
.setContentTitle("Richard Dawkins is talking" + "!")
.setContentText("Click me!")
.setSmallIcon(R.drawable.ic_action_call)
.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.richard_dawkins_1);
}
else if (random_number == 2) {
mMediaPlayer = MediaPlayer.create(this, R.raw.richard_dawkins_2);
}
else if (random_number == 3) {
mMediaPlayer = MediaPlayer.create(this, R.raw.richard_dawkins_3);
}
else if (random_number == 4) {
mMediaPlayer = MediaPlayer.create(this, R.raw.richard_dawkins_4);
}
else if (random_number == 5) {
mMediaPlayer = MediaPlayer.create(this, R.raw.richard_dawkins_5);
}
else if (random_number == 6) {
mMediaPlayer = MediaPlayer.create(this, R.raw.richard_dawkins_6);
}
else if (random_number == 7) {
mMediaPlayer = MediaPlayer.create(this, R.raw.richard_dawkins_7);
}
else if (random_number == 8) {
mMediaPlayer = MediaPlayer.create(this, R.raw.richard_dawkins_8);
}
else if (random_number == 9) {
mMediaPlayer = MediaPlayer.create(this, R.raw.richard_dawkins_9);
}
else {
mMediaPlayer = MediaPlayer.create(this, R.raw.richard_dawkins_1);
}
//mMediaPlayer = MediaPlayer.create(this, R.raw.richard_dawkins_1);
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;
}
@Override public void onDestroy() {
Log.e("JSLog", "on destroy called");
super.onDestroy();
this.isRunning = false;
}
import android.annotation.TargetApi;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
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.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
import java.util.Random;
public class Mainalarm extends AppCompatActivity {
AlarmManager alarmManager;
private PendingIntent pending_intent;
private TimePicker alarmTimePicker;
private TextView alarmTextView;
private AlarmReceiver alarm;
Mainalarm inst;
Context context;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainalarm);
this.context = this;
//alarm = new AlarmReceiver(); alarmTextView = (TextView) findViewById(R.id.alarmText);
final Intent myIntent = new Intent(this.context, AlarmReceiver.class);
// Get the alarm manager service alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
// set the alarm to the time that you picked final Calendar calendar = Calendar.getInstance();
alarmTimePicker = (TimePicker) findViewById(R.id.alarmTimePicker);
Button start_alarm= (Button) findViewById(R.id.start_alarm);
start_alarm.setOnClickListener(new View.OnClickListener() {
@TargetApi(Build.VERSION_CODES.M)
@Override public void onClick(View v) {
calendar.add(Calendar.SECOND, 3);
//setAlarmText("You clicked a button");
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");
pending_intent = PendingIntent.getBroadcast(Mainalarm.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pending_intent);
// now you should change the set Alarm text so it says something nice
setAlarmText("Alarm set to " + hour + ":" + minute);
//Toast.makeText(getApplicationContext(), "You set the alarm", Toast.LENGTH_SHORT).show(); }
});
Button stop_alarm= (Button) findViewById(R.id.stop_alarm);
stop_alarm.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
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");
//setAlarmText("You clicked a " + " canceled"); }
});
}
public void setAlarmText(String alarmText) {
alarmTextView.setText(alarmText);
}
@Override public void onStart() {
super.onStart();
inst = this;
}
@Override public void onDestroy() {
super.onDestroy();
Log.e("MyActivity", "on Destroy");
}
}
}
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
<activity android:name=".Mainalarm">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".AlarmReceiver" />
<service android:name=".RingtonePlayingService" android:enabled="true">
</service>
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout 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" tools:context=".Mainalarm" tools:layout_editor_absoluteY="81dp" tools:layout_editor_absoluteX="0dp">
<TimePicker android:id="@+id/alarmTimePicker" android:layout_width="350dp" android:layout_height="372dp" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="8dp" android:layout_marginLeft="8dp" app:layout_constraintLeft_toLeftOf="parent" android:layout_marginRight="8dp" app:layout_constraintRight_toRightOf="parent" app:layout_constraintHorizontal_bias="0.518" />
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Set alarm" android:id="@+id/start_alarm" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:onClick="startTimer" android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/alarmText" android:layout_marginLeft="63dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="8dp" />
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Unset alarm" android:id="@+id/stop_alarm"
android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:onClick="cancelTimer" android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/alarmText" android:layout_marginRight="8dp" app:layout_constraintRight_toRightOf="parent" app:layout_constraintLeft_toRightOf="@+id/start_alarm" android:layout_marginLeft="8dp" app:layout_constraintHorizontal_bias="0.705" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="8dp" />
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Set the alarm clock!" android:id="@+id/alarmText" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_below="@+id/start_alarm" android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/alarmTimePicker" android:layout_marginRight="8dp" app:layout_constraintRight_toRightOf="parent" android:layout_marginLeft="8dp" app:layout_constraintLeft_toLeftOf="parent" />
</android.support.constraint.ConstraintLayout>
ليست هناك تعليقات:
إرسال تعليق