Skip to content

Commit fc59df1

Browse files
Merge pull request #112 from Omega-R/feature/alarm_intent_builder
Feature/alarm intent builder
2 parents b1f6af9 + d756471 commit fc59df1

6 files changed

Lines changed: 179 additions & 8 deletions

File tree

core/src/main/AndroidManifest.xml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,27 @@
22
xmlns:tools="http://schemas.android.com/tools"
33
package="com.omega_r.libs.omegaintentbuilder">
44

5-
<uses-permission android:name="android.permission.INTERNET"/>
6-
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
7-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
5+
<uses-permission android:name="android.permission.INTERNET" />
6+
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
7+
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
88
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
99

1010
<application>
1111
<provider
1212
android:name="com.omega_r.libs.omegaintentbuilder.providers.FileProvider"
1313
android:authorities="${applicationId}.${omegaSuffixAuthority}"
14-
android:grantUriPermissions="true"
15-
android:exported="false">
14+
android:exported="false"
15+
android:grantUriPermissions="true">
1616

1717
<meta-data
1818
android:name="android.support.FILE_PROVIDER_PATHS"
19-
android:resource="@xml/omega_file_paths"/>
19+
android:resource="@xml/omega_file_paths" />
2020

2121
</provider>
2222

23-
<activity android:name=".handlers.OmegaHandleResultActivity"
24-
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
23+
<activity
24+
android:name=".handlers.OmegaHandleResultActivity"
25+
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
2526
</application>
2627

2728
</manifest>

core/src/main/java/com/omega_r/libs/omegaintentbuilder/OmegaIntentBuilder.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,11 @@ object OmegaIntentBuilder {
156156
@JvmStatic
157157
fun searchWeb() = SearchWebIntentBuilder()
158158

159+
/**
160+
* @return AlarmIntentBuilder
161+
*/
162+
@JvmStatic
163+
@RequiresApi(Build.VERSION_CODES.KITKAT)
164+
fun createAlarm() = AlarmIntentBuilder()
165+
159166
}
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
package com.omega_r.libs.omegaintentbuilder.builders
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
import android.provider.AlarmClock.*
6+
7+
class AlarmIntentBuilder : BaseActivityBuilder() {
8+
private var message: String? = null
9+
private var hour: Int? = null
10+
private var minutes: Int? = null
11+
private var ringtone: String? = null
12+
private var skipUI: Boolean = false
13+
private var vibrate: Boolean? = null
14+
private var ringtoneSilent: Boolean = false
15+
16+
/**
17+
* Set custom message for the alarm.
18+
* <p>
19+
* The value is a {@link String}.
20+
* </p>
21+
*
22+
* @param message String
23+
* @return This AlarmIntentBuilder for method chaining
24+
*/
25+
fun message(message: String): AlarmIntentBuilder {
26+
this.message = message
27+
return this
28+
}
29+
30+
/**
31+
* Set the hour of the alarm.
32+
* <p>
33+
* The value is an {@link Integer} and ranges from 1 to 86400 (24 hours).
34+
* </p>
35+
*
36+
* @param hour String
37+
* @return This AlarmIntentBuilder for method chaining
38+
*/
39+
fun hour(hour: Int): AlarmIntentBuilder {
40+
this.hour = hour
41+
return this
42+
}
43+
44+
/**
45+
* Set the minutes of the alarm.
46+
*
47+
* @param minutes String
48+
* @return This AlarmIntentBuilder for method chaining
49+
*/
50+
fun minutes(minutes: Int): AlarmIntentBuilder {
51+
this.minutes = minutes
52+
return this
53+
}
54+
55+
/**
56+
* Set a ringtone to be played with this alarm.
57+
*
58+
* This value is a {@link String} and can either be set to {@link #VALUE_RINGTONE_SILENT} or
59+
* to a content URI of the media to be played. If not specified or the URI doesn't exist,
60+
* {@code "content://settings/system/alarm_alert} will be used.
61+
*
62+
* @param ringtone String
63+
* @return This AlarmIntentBuilder for method chaining
64+
*/
65+
fun ringtone(ringtone: String): AlarmIntentBuilder {
66+
this.ringtone = ringtone
67+
return this
68+
}
69+
70+
/**
71+
* If true, the application is asked to bypass any intermediate UI. If false, the application
72+
* may display intermediate UI like a confirmation dialog or settings.
73+
*
74+
* @return This AlarmIntentBuilder for method chaining
75+
*/
76+
fun skipUI(): AlarmIntentBuilder {
77+
skipUI = true
78+
return this
79+
}
80+
81+
/**
82+
* Set whether or not to activate the device vibrator.
83+
*
84+
* The value is a {@link Boolean}. The default is {@code true}.
85+
*
86+
* @return This AlarmIntentBuilder for method chaining
87+
*/
88+
@JvmOverloads
89+
fun vibrate(vibrate: Boolean = true): AlarmIntentBuilder {
90+
this.vibrate = vibrate
91+
return this
92+
}
93+
94+
/**
95+
* Bundle extra value: Indicates no ringtone should be played.
96+
*
97+
* @return This AlarmIntentBuilder for method chaining
98+
*/
99+
fun ringtoneSilent(): AlarmIntentBuilder {
100+
ringtoneSilent = true
101+
return this
102+
}
103+
104+
override fun createIntent(context: Context): Intent {
105+
return Intent(ACTION_SET_ALARM).apply {
106+
message?.let {
107+
putExtra(EXTRA_MESSAGE, it)
108+
}
109+
110+
hour?.let {
111+
putExtra(EXTRA_HOUR, it)
112+
}
113+
114+
minutes?.let {
115+
putExtra(EXTRA_MINUTES, it)
116+
}
117+
118+
ringtone?.let {
119+
putExtra(EXTRA_RINGTONE, it)
120+
}
121+
122+
if (skipUI) {
123+
putExtra(EXTRA_SKIP_UI, skipUI)
124+
}
125+
126+
vibrate?.let {
127+
putExtra(EXTRA_VIBRATE, it)
128+
}
129+
130+
if (ringtoneSilent) {
131+
putExtra(VALUE_RINGTONE_SILENT, ringtoneSilent)
132+
}
133+
134+
}
135+
}
136+
137+
}

examples/src/main/java/com/omega_r/omegaintentbuilder/MainActivity.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ protected void onCreate(Bundle savedInstanceState) {
4040
findViewById(R.id.button_speech_to_text).setOnClickListener(this);
4141
findViewById(R.id.button_service_extra).setOnClickListener(this);
4242
findViewById(R.id.button_fragment_extra).setOnClickListener(this);
43+
findViewById(R.id.button_create_alarm).setOnClickListener(this);
4344
findViewById(R.id.button_insert_contact).setOnClickListener(this);
4445
findViewById(R.id.button_search_web).setOnClickListener(this);
46+
findViewById(R.id.button_create_timer).setOnClickListener(this);
4547
}
4648

4749
@Override
@@ -101,6 +103,12 @@ public void onClick(View v) {
101103
case R.id.button_search_web:
102104
onSearchWebClicked();
103105
break;
106+
case R.id.button_create_alarm:
107+
onCreateAlarmClicked();
108+
break;
109+
case R.id.button_create_timer:
110+
onCreateTimerClicked();
111+
break;
104112
}
105113
}
106114

@@ -250,6 +258,16 @@ private void onExtrasToFragmentClicked() {
250258
// .startActivity();
251259
}
252260

261+
private void onCreateAlarmClicked() {
262+
OmegaIntentBuilder
263+
.createAlarm()
264+
.message("It's your alarm")
265+
.hour(15)
266+
.vibrate()
267+
.minutes(23)
268+
.startActivity(this);
269+
}
270+
253271
private void onInsertContactClicked() {
254272
OmegaIntentBuilder
255273
.insertContact()

examples/src/main/res/layout/activity_main.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,13 @@
139139
android:theme="@style/ButtonStyle"
140140
android:text="@string/fragment_extra"/>
141141

142+
<Button
143+
android:id="@+id/button_create_alarm"
144+
android:layout_width="match_parent"
145+
android:layout_height="wrap_content"
146+
android:theme="@style/ButtonStyle"
147+
android:text="@string/create_alarm"/>
148+
142149
<Button
143150
android:id="@+id/button_search_web"
144151
android:layout_width="match_parent"

examples/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<string name="service_extra">Extras to Service</string>
2222
<string name="title_activity_tab">TabActivity</string>
2323
<string name="fragment_extra">Extras to Fragment</string>
24+
<string name="create_alarm">Create Alarm</string>
2425
<string name="create_timer">Create Timer</string>
2526
<string name="insert_contact">Insert Contact</string>
2627
<string name="search_web">Search Web</string>

0 commit comments

Comments
 (0)