Skip to content

Commit 138571a

Browse files
committed
Merge remote-tracking branch 'origin/develop' into 13-feature-mission-over
# Conflicts: # presentation/src/main/res/layout/bottom_sheet_home_state_expanded.xml # presentation/src/main/res/values/strings.xml
2 parents f967f49 + c84f510 commit 138571a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+1065
-456
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ render.experimental.xml
3131
*.keystore
3232

3333
# Google Services (e.g. APIs or Firebase)
34-
google-services.json
34+
presentation/google-services.json
3535

3636
# Android Profiling
3737
*.hprof

domain/src/main/java/com/stop/domain/model/geoLocation/GeoLocationInfo.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,9 @@ data class GeoLocationInfo(
66
val lotAddress: String,
77
val distance: String
88
)
9+
10+
fun GeoLocationInfo.toClickedGeoLocationInfo(clickedPlaceName: String): GeoLocationInfo {
11+
return this.copy(
12+
title = clickedPlaceName
13+
)
14+
}

domain/src/main/java/com/stop/domain/usecase/geoLocation/GeoLocationUseCaseImpl.kt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,33 @@ package com.stop.domain.usecase.geoLocation
33
import com.stop.domain.model.geoLocation.AddressType
44
import com.stop.domain.model.geoLocation.GeoLocationInfo
55
import com.stop.domain.model.route.tmap.custom.Coordinate
6+
import com.stop.domain.model.route.tmap.origin.AddressInfo
67
import com.stop.domain.repository.RouteRepository
78
import javax.inject.Inject
89

910
class GeoLocationUseCaseImpl @Inject constructor(
1011
private val routeRepository: RouteRepository
1112
) : GeoLocationUseCase {
12-
1313
override suspend fun getGeoLocationInfo(lat: Double, lon: Double): GeoLocationInfo {
1414
val result = routeRepository.reverseGeocoding(
1515
Coordinate(lat.toString(), lon.toString()),
1616
AddressType.FULL_ADDRESS
1717
).addressInfo
18-
1918
val address = result.fullAddress.split(",").drop(1)
19+
2020
return GeoLocationInfo(
21-
title = result.buildingName,
21+
title = getTitle(result),
2222
roadAddress = address.first(),
2323
lotAddress = address.last().replace(result.buildingName, ""),
2424
distance = result.mappingDistance
2525
)
2626
}
27+
28+
private fun getTitle(result: AddressInfo): String {
29+
return if (result.buildingName != "") {
30+
result.buildingName
31+
} else {
32+
result.fullAddress.split(",").drop(1).first()
33+
}
34+
}
2735
}

presentation/src/main/AndroidManifest.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
tools:targetApi="31">
2929

3030
<receiver
31-
android:name=".AlarmReceiver"
31+
android:name=".alarm.AlarmReceiver"
3232
android:enabled="true" />
3333

34-
<service android:name=".SoundService" />
34+
<service android:name=".alarm.SoundService" />
3535

3636
<provider
3737
android:name="androidx.startup.InitializationProvider"
@@ -50,6 +50,7 @@
5050
android:launchMode="singleTask"
5151
android:screenOrientation="portrait"
5252
android:showOnLockScreen="true"
53+
android:configChanges="orientation|screenSize|keyboardHidden"
5354
android:theme="@style/Theme.Splash">
5455

5556
<intent-filter>

presentation/src/main/java/com/stop/AlarmFunctions.kt

Lines changed: 0 additions & 48 deletions
This file was deleted.

presentation/src/main/java/com/stop/AlarmReceiver.kt

Lines changed: 0 additions & 63 deletions
This file was deleted.

presentation/src/main/java/com/stop/MainActivity.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class MainActivity : AppCompatActivity() {
2525

2626
override fun onNewIntent(intent: Intent?) {
2727
super.onNewIntent(intent)
28+
setIntent(intent)
2829

2930
intent?.extras?.getInt("ALARM_CODE")?.let {
3031
if (it == ALARM_CODE) {
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.stop.alarm
2+
3+
import android.app.AlarmManager
4+
import android.app.NotificationManager
5+
import android.content.Context
6+
import com.stop.makeFullTime
7+
import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_NOTIFICATION_ID
8+
import com.stop.util.getAlarmSettingNotification
9+
import com.stop.util.getAlarmSettingPendingIntent
10+
import com.stop.util.getAlarmStartPendingIntent
11+
12+
class AlarmFunctions(
13+
private val context: Context
14+
) {
15+
fun callAlarm(lastTime: String, alarmTime: Int) {
16+
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
17+
18+
val alarmSettingPendingIntent = context.getAlarmSettingPendingIntent()
19+
val alarmSettingNotification = context.getAlarmSettingNotification(
20+
alarmSettingPendingIntent,
21+
"알람이 막차시간 ${lastTime}에서 ${alarmTime}전에 울릴예정입니다."
22+
)
23+
notificationManager.notify(ALARM_NOTIFICATION_ID, alarmSettingNotification)
24+
25+
val alarmReceiverPendingIntent = context.getAlarmStartPendingIntent()
26+
27+
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
28+
alarmManager.setExactAndAllowWhileIdle(
29+
AlarmManager.RTC_WAKEUP,
30+
makeFullTime(lastTime).timeInMillis - (alarmTime * 60 * 1000),
31+
alarmReceiverPendingIntent
32+
)
33+
}
34+
35+
fun cancelAlarm() {
36+
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
37+
val alarmReceiverPendingIntent = context.getAlarmStartPendingIntent()
38+
39+
alarmManager.cancel(alarmReceiverPendingIntent)
40+
41+
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
42+
notificationManager.cancel(ALARM_NOTIFICATION_ID)
43+
}
44+
45+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package com.stop.alarm
2+
3+
import android.app.NotificationManager
4+
import android.content.BroadcastReceiver
5+
import android.content.Context
6+
import android.content.Intent
7+
import com.stop.MainActivity
8+
import com.stop.R
9+
import com.stop.isMoreThanOreo
10+
import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_CODE
11+
import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_NOTIFICATION_HIGH_ID
12+
import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_NOTIFICATION_ID
13+
import com.stop.util.getAlarmReceiverNotification
14+
import com.stop.util.getAlarmReceiverPendingIntent
15+
import com.stop.util.getAlarmScreenOnNotification
16+
import com.stop.util.isScreenOn
17+
18+
class AlarmReceiver : BroadcastReceiver() {
19+
20+
override fun onReceive(context: Context, intent: Intent) {
21+
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
22+
notificationManager.cancel(ALARM_NOTIFICATION_ID)
23+
24+
val soundServiceIntent = Intent(context, SoundService::class.java)
25+
val content = context.getString(R.string.alarm_content_text)
26+
27+
if (context.isScreenOn()) {
28+
if (isMoreThanOreo()) {
29+
context.startForegroundService(soundServiceIntent)
30+
} else {
31+
context.startService(soundServiceIntent)
32+
}
33+
34+
val alarmStartPendingIntent = context.getAlarmReceiverPendingIntent()
35+
val alarmStartNotification = context.getAlarmScreenOnNotification(alarmStartPendingIntent, content)
36+
37+
notificationManager.notify(ALARM_NOTIFICATION_ID, alarmStartNotification)
38+
39+
/*Intent(context, MainActivity::class.java).apply {
40+
putExtra("ALARM_CODE", ALARM_CODE)
41+
context.startActivity(this)
42+
}*/
43+
} else {
44+
if (isMoreThanOreo()) {
45+
context.startForegroundService(soundServiceIntent)
46+
47+
val alarmStartPendingIntent = context.getAlarmReceiverPendingIntent()
48+
val alarmStartNotification = context.getAlarmReceiverNotification(
49+
alarmStartPendingIntent,
50+
content
51+
)
52+
53+
notificationManager.notify(ALARM_NOTIFICATION_HIGH_ID, alarmStartNotification)
54+
} else {
55+
context.startService(soundServiceIntent)
56+
Intent(context, MainActivity::class.java).apply {
57+
putExtra("ALARM_CODE", ALARM_CODE)
58+
context.startActivity(this)
59+
}
60+
}
61+
}
62+
63+
}
64+
65+
}

presentation/src/main/java/com/stop/LastTimeCheckWorker.kt renamed to presentation/src/main/java/com/stop/alarm/LastTimeCheckWorker.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.stop
1+
package com.stop.alarm
22

33
import android.app.NotificationChannel
44
import android.app.NotificationManager
@@ -9,8 +9,10 @@ import androidx.work.CoroutineWorker
99
import androidx.work.ForegroundInfo
1010
import androidx.work.WorkManager
1111
import androidx.work.WorkerParameters
12+
import com.stop.R
1213
import com.stop.domain.usecase.nearplace.GetNearPlacesUseCase
13-
import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_CODE
14+
import com.stop.isMoreThanOreo
15+
import com.stop.makeFullTime
1416
import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_TIME
1517
import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.LAST_TIME
1618
import dagger.assisted.Assisted
@@ -91,8 +93,8 @@ class LastTimeCheckWorker @AssistedInject constructor(
9193

9294
if(lastTime != resultLastTime && resultLastTime != null){
9395
lastTime = resultLastTime
94-
alarmFunctions.cancelAlarm(ALARM_CODE)
95-
alarmFunctions.callAlarm(resultLastTime, alarmTime, ALARM_CODE)
96+
alarmFunctions.cancelAlarm()
97+
alarmFunctions.callAlarm(resultLastTime, alarmTime)
9698
}
9799

98100
val delayTime = getDelayTime()

0 commit comments

Comments
 (0)