Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions core/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,27 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.omega_r.libs.omegaintentbuilder">

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />

<application>
<provider
android:name="com.omega_r.libs.omegaintentbuilder.providers.FileProvider"
android:authorities="${applicationId}.${omegaSuffixAuthority}"
android:grantUriPermissions="true"
android:exported="false">
android:exported="false"
android:grantUriPermissions="true">

<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/omega_file_paths"/>
android:resource="@xml/omega_file_paths" />

</provider>

<activity android:name=".handlers.OmegaHandleResultActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<activity
android:name=".handlers.OmegaHandleResultActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -156,4 +156,11 @@ object OmegaIntentBuilder {
@JvmStatic
fun searchWeb() = SearchWebIntentBuilder()

/**
* @return AlarmIntentBuilder
*/
@JvmStatic
@RequiresApi(Build.VERSION_CODES.KITKAT)
fun createAlarm() = AlarmIntentBuilder()

}
Original file line number Diff line number Diff line change
@@ -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.
* <p>
* The value is a {@link String}.
* </p>
*
* @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.
* <p>
* The value is an {@link Integer} and ranges from 1 to 86400 (24 hours).
* </p>
*
* @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)
}

}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
}
}

Expand Down Expand Up @@ -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()
Expand Down
7 changes: 7 additions & 0 deletions examples/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,13 @@
android:theme="@style/ButtonStyle"
android:text="@string/fragment_extra"/>

<Button
android:id="@+id/button_create_alarm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ButtonStyle"
android:text="@string/create_alarm"/>

<Button
android:id="@+id/button_search_web"
android:layout_width="match_parent"
Expand Down
1 change: 1 addition & 0 deletions examples/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
<string name="service_extra">Extras to Service</string>
<string name="title_activity_tab">TabActivity</string>
<string name="fragment_extra">Extras to Fragment</string>
<string name="create_alarm">Create Alarm</string>
<string name="create_timer">Create Timer</string>
<string name="insert_contact">Insert Contact</string>
<string name="search_web">Search Web</string>
Expand Down