diff --git a/app/build.gradle b/app/build.gradle
index abd394e..c85d449 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,6 +2,7 @@ plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
+ id 'com.google.gms.google-services'
}
android {
@@ -47,6 +48,8 @@ dependencies {
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5'
implementation 'androidx.navigation:navigation-ui-ktx:2.3.5'
implementation 'androidx.preference:preference-ktx:1.1.1'
+ implementation 'com.google.android.gms:play-services-maps:17.0.0'
+ implementation 'com.google.firebase:firebase-messaging:21.0.1'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cb2ada8..b7a7041 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -24,7 +25,7 @@
android:value="@string/google_maps_key" />
@@ -36,12 +37,20 @@
+ android:theme="@style/Theme.MovieFind.NoActionBar" />
+ android:exported="true">
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/uzlov/moviefind/HostActivity.kt b/app/src/main/java/com/uzlov/moviefind/activities/HostActivity.kt
similarity index 95%
rename from app/src/main/java/com/uzlov/moviefind/HostActivity.kt
rename to app/src/main/java/com/uzlov/moviefind/activities/HostActivity.kt
index a898d37..77c023d 100644
--- a/app/src/main/java/com/uzlov/moviefind/HostActivity.kt
+++ b/app/src/main/java/com/uzlov/moviefind/activities/HostActivity.kt
@@ -1,4 +1,4 @@
-package com.uzlov.moviefind
+package com.uzlov.moviefind.activities
import com.uzlov.moviefind.services.SampleService
import android.content.BroadcastReceiver
@@ -11,6 +11,7 @@ import android.view.MenuItem
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
+import com.uzlov.moviefind.R
import com.uzlov.moviefind.databinding.ActivityMainBinding
import com.uzlov.moviefind.fragments.*
import com.uzlov.moviefind.services.NetworkListener
@@ -42,7 +43,7 @@ class HostActivity : AppCompatActivity() {
setActiveFragment(homeFragment)
true
}
- R.id.menu_favorite-> {
+ R.id.menu_favorite -> {
setActiveFragment(popularFilmsFragment)
true
}
@@ -53,7 +54,11 @@ class HostActivity : AppCompatActivity() {
else -> false
}
}
+
startNetworkListener()
+
+ val intent = Intent(this, SampleService::class.java)
+ startService(intent)
}
private fun startNetworkListener(){
diff --git a/app/src/main/java/com/uzlov/moviefind/fragments/ActorFragment.kt b/app/src/main/java/com/uzlov/moviefind/fragments/ActorFragment.kt
index 878865f..2f8d661 100644
--- a/app/src/main/java/com/uzlov/moviefind/fragments/ActorFragment.kt
+++ b/app/src/main/java/com/uzlov/moviefind/fragments/ActorFragment.kt
@@ -18,7 +18,6 @@ import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions
import com.uzlov.moviefind.R
import com.uzlov.moviefind.databinding.FragmentMapsBinding
-import com.uzlov.moviefind.repository.RepositoryRemoteImpl
import com.uzlov.moviefind.viewmodels.FilmsViewModel
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
diff --git a/app/src/main/java/com/uzlov/moviefind/services/SampleService.kt b/app/src/main/java/com/uzlov/moviefind/services/SampleService.kt
index 5607a4b..fecf02c 100644
--- a/app/src/main/java/com/uzlov/moviefind/services/SampleService.kt
+++ b/app/src/main/java/com/uzlov/moviefind/services/SampleService.kt
@@ -1,50 +1,46 @@
package com.uzlov.moviefind.services
-import android.app.*
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.PendingIntent
import android.content.Intent
import android.os.Build
-import android.os.IBinder
-import android.util.Log
import androidx.core.app.NotificationCompat
-import com.uzlov.moviefind.HostActivity
+import com.google.firebase.messaging.FirebaseMessagingService
+import com.google.firebase.messaging.RemoteMessage
import com.uzlov.moviefind.R
+import com.uzlov.moviefind.activities.HostActivity
-class SampleService : Service() {
- private val CHANNEL_ID: String = "ForegroundServiceChannel"
+class SampleService : FirebaseMessagingService() {
+ private val NOTIFICATION_ID : Int = 1
+ private val CHANNEL_ID by lazy {resources.getString(R.string.default_notification_channel_id)}
companion object{
- val VALUE_KEY: String = "sample_key"
- val ACTION = "ACTION_SAMPLE_SERVICE"
+ const val VALUE_KEY: String = "sample_key"
}
- override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
- createNotificationChannel()
+ override fun onNewToken(p0: String) {
+ super.onNewToken(p0)
+ }
+
+ override fun onMessageReceived(message: RemoteMessage) {
+
+ val manager = createNotificationChannel()
val notificationIntent = Intent(this, HostActivity::class.java)
- val pendingIntent = PendingIntent.getActivity(this,
- 0, notificationIntent, 0)
- val notification: Notification = NotificationCompat.Builder(this, CHANNEL_ID)
+ val pendingIntent = PendingIntent.getActivity(
+ this,
+ 0, notificationIntent, 0
+ )
+ val notificationBuilder = NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle(getString(R.string.funny_string))
.setSmallIcon(R.drawable.ic_baseline_favorite_border_24)
+ .setContentText(message.notification?.body ?: "Empty body")
.setContentIntent(pendingIntent)
- .build()
- startForeground(1, notification)
-
- Thread {
- for (i in 0..5){
- Thread.sleep(1000)
- val data = Intent().apply {
- putExtra(VALUE_KEY, (i % 2 == 0).toString())
- action = ACTION
- }
- sendBroadcast(data)
- if (i == 4) stopSelf()
- }
- }.start()
-
- return START_STICKY
+
+ manager?.notify(NOTIFICATION_ID, notificationBuilder.build())
}
- private fun createNotificationChannel() {
+ private fun createNotificationChannel() : NotificationManager? {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val serviceChannel = NotificationChannel(
CHANNEL_ID,
@@ -53,10 +49,8 @@ class SampleService : Service() {
)
val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(serviceChannel)
+ return manager
}
- }
-
- override fun onBind(p0: Intent?): IBinder? {
return null
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 4723548..b2c2542 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -7,7 +7,7 @@
android:layout_height="match_parent"
android:orientation="vertical"
tools:viewBindingIgnore="false"
- tools:context=".HostActivity">
+ tools:context=".activities.HostActivity">
diff --git a/app/src/main/res/values-night/strings.xml b/app/src/main/res/values-night/strings.xml
index 6104ba8..348664a 100644
--- a/app/src/main/res/values-night/strings.xml
+++ b/app/src/main/res/values-night/strings.xml
@@ -20,4 +20,5 @@
Это уведомление из MovieFind
Популярные
Поделись с друзьями
+ channel_fcm
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 1ee32ef..dc03d48 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -10,4 +10,5 @@
32dp
100dp
18sp
+ 300dp
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4926201..c32c36f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -131,4 +131,5 @@
Only download attachments when manually requested
Поделись с друзьями
+ channel_fcm
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 7675dc5..dc5d79c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,6 +8,7 @@ buildscript {
dependencies {
classpath "com.android.tools.build:gradle:4.2.0-alpha09"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ classpath 'com.google.gms:google-services:4.3.5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files