diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml index eea360d..d470019 100644 --- a/core/src/main/AndroidManifest.xml +++ b/core/src/main/AndroidManifest.xml @@ -2,26 +2,27 @@ xmlns:tools="http://schemas.android.com/tools" package="com.omega_r.libs.omegaintentbuilder"> - - - + + + + android:exported="false" + android:grantUriPermissions="true"> + android:resource="@xml/omega_file_paths" /> - + \ No newline at end of file diff --git a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/OmegaIntentBuilder.kt b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/OmegaIntentBuilder.kt index 92ef328..64597ce 100644 --- a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/OmegaIntentBuilder.kt +++ b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/OmegaIntentBuilder.kt @@ -156,4 +156,11 @@ object OmegaIntentBuilder { @JvmStatic fun searchWeb() = SearchWebIntentBuilder() + /** + * @return AlarmIntentBuilder + */ + @JvmStatic + @RequiresApi(Build.VERSION_CODES.KITKAT) + fun createAlarm() = AlarmIntentBuilder() + } \ No newline at end of file diff --git a/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/AlarmIntentBuilder.kt b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/AlarmIntentBuilder.kt new file mode 100644 index 0000000..441aa34 --- /dev/null +++ b/core/src/main/java/com/omega_r/libs/omegaintentbuilder/builders/AlarmIntentBuilder.kt @@ -0,0 +1,137 @@ +package com.omega_r.libs.omegaintentbuilder.builders + +import android.content.Context +import android.content.Intent +import android.provider.AlarmClock.* + +class AlarmIntentBuilder : BaseActivityBuilder() { + private var message: String? = null + private var hour: Int? = null + private var minutes: Int? = null + private var ringtone: String? = null + private var skipUI: Boolean = false + private var vibrate: Boolean? = null + private var ringtoneSilent: Boolean = false + + /** + * Set custom message for the alarm. + *

+ * The value is a {@link String}. + *

+ * + * @param message String + * @return This AlarmIntentBuilder for method chaining + */ + fun message(message: String): AlarmIntentBuilder { + this.message = message + return this + } + + /** + * Set the hour of the alarm. + *

+ * The value is an {@link Integer} and ranges from 1 to 86400 (24 hours). + *

+ * + * @param hour String + * @return This AlarmIntentBuilder for method chaining + */ + fun hour(hour: Int): AlarmIntentBuilder { + this.hour = hour + return this + } + + /** + * Set the minutes of the alarm. + * + * @param minutes String + * @return This AlarmIntentBuilder for method chaining + */ + fun minutes(minutes: Int): AlarmIntentBuilder { + this.minutes = minutes + return this + } + + /** + * Set a ringtone to be played with this alarm. + * + * This value is a {@link String} and can either be set to {@link #VALUE_RINGTONE_SILENT} or + * to a content URI of the media to be played. If not specified or the URI doesn't exist, + * {@code "content://settings/system/alarm_alert} will be used. + * + * @param ringtone String + * @return This AlarmIntentBuilder for method chaining + */ + fun ringtone(ringtone: String): AlarmIntentBuilder { + this.ringtone = ringtone + return this + } + + /** + * If true, the application is asked to bypass any intermediate UI. If false, the application + * may display intermediate UI like a confirmation dialog or settings. + * + * @return This AlarmIntentBuilder for method chaining + */ + fun skipUI(): AlarmIntentBuilder { + skipUI = true + return this + } + + /** + * Set whether or not to activate the device vibrator. + * + * The value is a {@link Boolean}. The default is {@code true}. + * + * @return This AlarmIntentBuilder for method chaining + */ + @JvmOverloads + fun vibrate(vibrate: Boolean = true): AlarmIntentBuilder { + this.vibrate = vibrate + return this + } + + /** + * Bundle extra value: Indicates no ringtone should be played. + * + * @return This AlarmIntentBuilder for method chaining + */ + fun ringtoneSilent(): AlarmIntentBuilder { + ringtoneSilent = true + return this + } + + override fun createIntent(context: Context): Intent { + return Intent(ACTION_SET_ALARM).apply { + message?.let { + putExtra(EXTRA_MESSAGE, it) + } + + hour?.let { + putExtra(EXTRA_HOUR, it) + } + + minutes?.let { + putExtra(EXTRA_MINUTES, it) + } + + ringtone?.let { + putExtra(EXTRA_RINGTONE, it) + } + + if (skipUI) { + putExtra(EXTRA_SKIP_UI, skipUI) + } + + vibrate?.let { + putExtra(EXTRA_VIBRATE, it) + } + + if (ringtoneSilent) { + putExtra(VALUE_RINGTONE_SILENT, ringtoneSilent) + } + + } + } + +} \ No newline at end of file diff --git a/examples/src/main/java/com/omega_r/omegaintentbuilder/MainActivity.java b/examples/src/main/java/com/omega_r/omegaintentbuilder/MainActivity.java index 8dc2c6b..942cab0 100644 --- a/examples/src/main/java/com/omega_r/omegaintentbuilder/MainActivity.java +++ b/examples/src/main/java/com/omega_r/omegaintentbuilder/MainActivity.java @@ -40,8 +40,10 @@ protected void onCreate(Bundle savedInstanceState) { findViewById(R.id.button_speech_to_text).setOnClickListener(this); findViewById(R.id.button_service_extra).setOnClickListener(this); findViewById(R.id.button_fragment_extra).setOnClickListener(this); + findViewById(R.id.button_create_alarm).setOnClickListener(this); findViewById(R.id.button_insert_contact).setOnClickListener(this); findViewById(R.id.button_search_web).setOnClickListener(this); + findViewById(R.id.button_create_timer).setOnClickListener(this); } @Override @@ -101,6 +103,12 @@ public void onClick(View v) { case R.id.button_search_web: onSearchWebClicked(); break; + case R.id.button_create_alarm: + onCreateAlarmClicked(); + break; + case R.id.button_create_timer: + onCreateTimerClicked(); + break; } } @@ -250,6 +258,16 @@ private void onExtrasToFragmentClicked() { // .startActivity(); } + private void onCreateAlarmClicked() { + OmegaIntentBuilder + .createAlarm() + .message("It's your alarm") + .hour(15) + .vibrate() + .minutes(23) + .startActivity(this); + } + private void onInsertContactClicked() { OmegaIntentBuilder .insertContact() diff --git a/examples/src/main/res/layout/activity_main.xml b/examples/src/main/res/layout/activity_main.xml index b07f12f..85eeb6a 100644 --- a/examples/src/main/res/layout/activity_main.xml +++ b/examples/src/main/res/layout/activity_main.xml @@ -139,6 +139,13 @@ android:theme="@style/ButtonStyle" android:text="@string/fragment_extra"/> +