Skip to content

Commit 721d41f

Browse files
committed
Merge remote-tracking branch 'origin/develop' into 92-feat-ui-refactor
# Conflicts: # presentation/src/main/java/com/stop/ui/map/MapFragment.kt
2 parents e95e560 + f808c7e commit 721d41f

40 files changed

+629
-451
lines changed

data/src/main/java/com/stop/data/local/model/Alarm.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import com.stop.domain.model.route.tmap.custom.Route
88
data class Alarm(
99
val startPosition: String,
1010
val endPosition: String,
11-
val routes: List<Route>,
11+
val routes: Route,
1212
val lastTime: String, // 막차 시간 -> 23:30:15 시분초
1313
val walkTime : Int, // 도보시간 -> 분단위
1414
val alarmTime: Int, // 10분 전 알람 설정 -> 10

data/src/main/java/com/stop/data/model/alarm/AlarmRepositoryItem.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.stop.domain.model.route.tmap.custom.Route
77
data class AlarmRepositoryItem(
88
val startPosition: String,
99
val endPosition: String,
10-
val routes: List<Route>,
10+
val routes: Route,
1111
val lastTime: String, // 막차 시간 -> 23:30:15 시분초
1212
val walkTime : Int, // 도보시간 -> 분단위
1313
val alarmTime: Int, // 10분 전 알람 설정 -> 10

data/src/main/java/com/stop/data/remote/source/route/RouteRemoteDataSourceImpl.kt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -211,24 +211,25 @@ internal class RouteRemoteDataSourceImpl @Inject constructor(
211211
private fun eraseDuplicateLeg(itineraries: List<Itinerary>): List<Itinerary> {
212212
return itineraries.map { itinerary ->
213213
var beforeInfo: Pair<String, Coordinate>? = null
214-
var subtractTime = 0.0
215-
var subtractDistance = 0.0
214+
var calculatedTotalTime = 0.0
215+
var calculatedTotalDistance = 0.0
216216

217217
val newLegs = itinerary.legs.fold(listOf<Leg>()) { legs, leg ->
218218
val current =
219219
Pair(leg.mode, Coordinate(leg.start.lat.toString(), leg.start.lon.toString()))
220220

221221
if (legs.isEmpty()) {
222222
beforeInfo = current
223+
calculatedTotalTime += leg.sectionTime
224+
calculatedTotalDistance += leg.distance
223225
return@fold legs + leg
224226
}
225-
226227
if (beforeInfo == current) {
227-
subtractDistance += leg.distance
228-
subtractTime += leg.sectionTime
229228
return@fold legs
230229
}
231230
beforeInfo = current
231+
calculatedTotalTime += leg.sectionTime
232+
calculatedTotalDistance += leg.distance
232233
legs + leg
233234
}
234235

@@ -237,8 +238,8 @@ internal class RouteRemoteDataSourceImpl @Inject constructor(
237238
fare = fare,
238239
legs = newLegs,
239240
pathType = pathType,
240-
totalDistance = totalDistance - subtractDistance,
241-
totalTime = totalTime - subtractTime.toInt(),
241+
totalDistance = calculatedTotalDistance,
242+
totalTime = calculatedTotalTime.toInt(),
242243
transferCount = transferCount,
243244
walkDistance = walkDistance,
244245
walkTime = walkTime,

data/src/main/java/com/stop/data/repository/RouteRepositoryImpl.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ internal class RouteRepositoryImpl @Inject constructor(
4141
remoteDataSource.getSubwayStationCd(stationId, stationName)
4242
} catch (exception: JsonDataException) {
4343
""
44+
} catch (exception: IllegalArgumentException) {
45+
exception.printStackTrace()
46+
""
4447
}
4548
}
4649

domain/src/main/java/com/stop/domain/model/alarm/AlarmUseCaseItem.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.stop.domain.model.route.tmap.custom.Route
55
data class AlarmUseCaseItem(
66
val startPosition: String,
77
val endPosition: String,
8-
val routes: List<Route>,
8+
val routes: Route,
99
val lastTime: String, // 막차 시간 -> 23:30:15 시분초
1010
val walkTime : Int, // 도보시간 -> 분단위
1111
val alarmTime: Int, // 10분 전 알람 설정 -> 10

domain/src/main/java/com/stop/domain/usecase/route/GetRouteUseCaseImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ internal class GetRouteUseCaseImpl @Inject constructor(
9595
}
9696

9797
private fun calculateProportionOfSectionTime(sectionTime: Double, totalTime: Int): Float {
98-
return (sectionTime / totalTime * 100).toInt().toFloat() / 100
98+
return (sectionTime / totalTime * 10_000).toInt().toFloat() / 10000
9999
}
100100

101101
private fun createCoordinates(linesString: String): List<Coordinate> {

presentation/src/main/AndroidManifest.xml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<uses-permission android:name="android.permission.INTERNET" />
77
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
88
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
9-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
9+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
1010

1111
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
1212
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
@@ -33,6 +33,8 @@
3333

3434
<service android:name=".alarm.SoundService" />
3535

36+
<service android:name=".alarm.SoundRestartService" />
37+
3638
<provider
3739
android:name="androidx.startup.InitializationProvider"
3840
android:authorities="${applicationId}.androidx-startup"
@@ -44,13 +46,17 @@
4446
tools:node="merge" />
4547

4648
<activity
47-
android:name=".MainActivity"
48-
android:excludeFromRecents="true"
49+
android:name=".AlarmActivity"
4950
android:exported="true"
50-
android:launchMode="singleTask"
5151
android:screenOrientation="portrait"
5252
android:showOnLockScreen="true"
53+
android:theme="@style/Theme.PlzStop" />
54+
55+
<activity
56+
android:name=".MainActivity"
5357
android:configChanges="orientation|screenSize|keyboardHidden"
58+
android:exported="true"
59+
android:screenOrientation="portrait"
5460
android:theme="@style/Theme.Splash">
5561

5662
<intent-filter>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.stop
2+
3+
import android.app.KeyguardManager
4+
import android.content.Context
5+
import android.os.Bundle
6+
import android.view.WindowManager
7+
import androidx.appcompat.app.AppCompatActivity
8+
import androidx.core.view.WindowCompat
9+
import com.stop.databinding.ActivityAlarmBinding
10+
import dagger.hilt.android.AndroidEntryPoint
11+
12+
@AndroidEntryPoint
13+
class AlarmActivity : AppCompatActivity() {
14+
15+
private lateinit var binding: ActivityAlarmBinding
16+
17+
override fun onCreate(savedInstanceState: Bundle?) {
18+
WindowCompat.setDecorFitsSystemWindows(window, false)
19+
super.onCreate(savedInstanceState)
20+
21+
binding = ActivityAlarmBinding.inflate(layoutInflater)
22+
setContentView(binding.root)
23+
24+
binding.navHostFragment.setPadding(0, 0, 0, this.navigationHeight())
25+
showOverLockScreen()
26+
}
27+
28+
private fun showOverLockScreen() {
29+
window.addFlags(
30+
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON or
31+
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
32+
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
33+
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
34+
)
35+
36+
if (isMoreThanOreoMr1()) {
37+
setShowWhenLocked(true)
38+
setTurnScreenOn(true)
39+
(getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager).requestDismissKeyguard(
40+
this,
41+
null
42+
)
43+
}
44+
}
45+
46+
}
Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,22 @@
11
package com.stop
22

3-
import android.app.KeyguardManager
43
import android.content.Context
5-
import android.content.Intent
64
import android.graphics.Rect
75
import android.os.Bundle
86
import android.view.MotionEvent
97
import android.view.View
10-
import android.view.WindowManager
118
import android.view.inputmethod.InputMethodManager
129
import android.widget.EditText
1310
import androidx.appcompat.app.AppCompatActivity
1411
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
1512
import androidx.core.view.WindowCompat
16-
import androidx.navigation.fragment.NavHostFragment
1713
import com.stop.databinding.ActivityMainBinding
18-
import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_CODE
19-
import com.stop.ui.mission.MissionWorker.Companion.MISSION_CODE
2014
import dagger.hilt.android.AndroidEntryPoint
2115

2216
@AndroidEntryPoint
2317
class MainActivity : AppCompatActivity() {
2418
private lateinit var binding: ActivityMainBinding
2519

26-
override fun onNewIntent(intent: Intent?) {
27-
super.onNewIntent(intent)
28-
setIntent(intent)
29-
30-
intent?.extras?.getInt("ALARM_CODE")?.let {
31-
if (it == ALARM_CODE) {
32-
val navHostFragment =
33-
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
34-
val inflater = navHostFragment.navController.navInflater
35-
val graph = inflater.inflate(R.navigation.nav_graph)
36-
graph.setStartDestination(R.id.alarmStartFragment)
37-
38-
navHostFragment.navController.graph = graph
39-
}
40-
}
41-
42-
intent?.extras?.getInt("MISSION_CODE")?.let {
43-
if (it == MISSION_CODE) {
44-
val navHostFragment =
45-
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
46-
val inflater = navHostFragment.navController.navInflater
47-
val graph = inflater.inflate(R.navigation.nav_graph)
48-
graph.setStartDestination(R.id.missionFragment)
49-
50-
navHostFragment.navController.graph = graph
51-
}
52-
}
53-
}
54-
5520
override fun onCreate(savedInstanceState: Bundle?) {
5621
installSplashScreen()
5722
WindowCompat.setDecorFitsSystemWindows(window, false)
@@ -61,7 +26,6 @@ class MainActivity : AppCompatActivity() {
6126
setContentView(binding.root)
6227

6328
binding.navHostFragment.setPadding(0, 0, 0, this.navigationHeight())
64-
showOverLockScreen()
6529
}
6630

6731
override fun dispatchTouchEvent(event: MotionEvent): Boolean {
@@ -87,22 +51,4 @@ class MainActivity : AppCompatActivity() {
8751
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
8852
}
8953

90-
private fun showOverLockScreen() {
91-
window.addFlags(
92-
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON or
93-
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD or
94-
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
95-
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
96-
)
97-
98-
if (isMoreThanOreoMr1()) {
99-
setShowWhenLocked(true)
100-
setTurnScreenOn(true)
101-
(getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager).requestDismissKeyguard(
102-
this,
103-
null
104-
)
105-
}
106-
}
107-
10854
}

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

Lines changed: 14 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,62 +4,44 @@ import android.app.NotificationManager
44
import android.content.BroadcastReceiver
55
import android.content.Context
66
import android.content.Intent
7-
import com.stop.MainActivity
7+
import com.stop.AlarmActivity
88
import com.stop.R
99
import com.stop.isMoreThanOreo
1010
import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_CODE
1111
import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_NOTIFICATION_HIGH_ID
1212
import com.stop.ui.alarmsetting.AlarmSettingFragment.Companion.ALARM_NOTIFICATION_ID
1313
import com.stop.util.getAlarmReceiverNotification
1414
import com.stop.util.getAlarmReceiverPendingIntent
15-
import com.stop.util.getAlarmScreenOnNotification
16-
import com.stop.util.isScreenOn
1715

1816
class AlarmReceiver : BroadcastReceiver() {
1917

2018
override fun onReceive(context: Context, intent: Intent) {
2119
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
2220
notificationManager.cancel(ALARM_NOTIFICATION_ID)
2321

24-
val soundServiceIntent = Intent(context, SoundService::class.java)
2522
val content = context.getString(R.string.alarm_content_text)
2623

27-
if (context.isScreenOn()) {
28-
if (isMoreThanOreo()) {
29-
context.startForegroundService(soundServiceIntent)
30-
} else {
31-
context.startService(soundServiceIntent)
32-
}
24+
if (isMoreThanOreo()) {
25+
val soundRestartServiceIntent = Intent(context, SoundRestartService::class.java)
26+
context.startForegroundService(soundRestartServiceIntent)
3327

3428
val alarmStartPendingIntent = context.getAlarmReceiverPendingIntent()
35-
val alarmStartNotification = context.getAlarmScreenOnNotification(alarmStartPendingIntent, content)
29+
val alarmStartNotification = context.getAlarmReceiverNotification(
30+
alarmStartPendingIntent,
31+
content
32+
)
3633

37-
notificationManager.notify(ALARM_NOTIFICATION_ID, alarmStartNotification)
34+
notificationManager.notify(ALARM_NOTIFICATION_HIGH_ID, alarmStartNotification)
35+
} else {
36+
val soundServiceIntent = Intent(context, SoundService::class.java)
37+
context.startService(soundServiceIntent)
3838

39-
/*Intent(context, MainActivity::class.java).apply {
39+
Intent(context, AlarmActivity::class.java).apply {
4040
putExtra("ALARM_CODE", ALARM_CODE)
41+
flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
4142
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-
}
6043
}
6144
}
62-
6345
}
6446

6547
}

0 commit comments

Comments
 (0)