diff --git "a/\353\213\211-\354\204\234\354\244\200\354\235\265/.idea/deploymentTargetDropDown.xml" "b/\353\213\211-\354\204\234\354\244\200\354\235\265/.idea/deploymentTargetDropDown.xml"
index 0c0c338..2538150 100644
--- "a/\353\213\211-\354\204\234\354\244\200\354\235\265/.idea/deploymentTargetDropDown.xml"
+++ "b/\353\213\211-\354\204\234\354\244\200\354\235\265/.idea/deploymentTargetDropDown.xml"
@@ -3,7 +3,20 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/\353\213\211-\354\204\234\354\244\200\354\235\265/.idea/vcs.xml" "b/\353\213\211-\354\204\234\354\244\200\354\235\265/.idea/vcs.xml"
index 35eb1dd..94a25f7 100644
--- "a/\353\213\211-\354\204\234\354\244\200\354\235\265/.idea/vcs.xml"
+++ "b/\353\213\211-\354\204\234\354\244\200\354\235\265/.idea/vcs.xml"
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/build.gradle" "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/build.gradle"
index d0db292..6e72414 100644
--- "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/build.gradle"
+++ "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/build.gradle"
@@ -41,6 +41,7 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.4.0'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
+ implementation 'com.google.code.gson:gson:2.10.1'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
diff --git "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/AndroidManifest.xml" "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/AndroidManifest.xml"
index 29f87a4..c80a112 100644
--- "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/AndroidManifest.xml"
+++ "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/AndroidManifest.xml"
@@ -1,5 +1,6 @@
+ android:exported="true"
+ android:theme="@style/SplashTheme">
@@ -23,6 +26,7 @@
android:exported="true">
+
\ No newline at end of file
diff --git "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/Album.kt" "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/Album.kt"
new file mode 100644
index 0000000..1ec8552
--- /dev/null
+++ "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/Album.kt"
@@ -0,0 +1,10 @@
+package com.example.flo
+
+import java.util.*
+
+
+data class Album(
+ var title: String? = "",
+ var singer: String? = "",
+ var coverImg: Int? = null
+)
diff --git "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/HomeFragment.kt" "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/HomeFragment.kt"
index f8613f3..96fa19a 100644
--- "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/HomeFragment.kt"
+++ "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/HomeFragment.kt"
@@ -11,6 +11,7 @@ import com.example.flo.databinding.FragmentHomeBinding
class HomeFragment : Fragment() {
lateinit var binding: FragmentHomeBinding
+ private var albumDates = ArrayList()
override fun onCreateView(
inflater: LayoutInflater,
@@ -19,10 +20,18 @@ class HomeFragment : Fragment() {
): View? {
binding = FragmentHomeBinding.inflate(inflater, container, false)
- binding.homeAlbumImgIv1.setOnClickListener{
- (context as MainActivity).supportFragmentManager.beginTransaction().replace(R.id.main_frm,AlbumFragment()).commitAllowingStateLoss()
+ albumDates.apply {
+ add(Album("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp))
+ add(Album("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp))
+ add(Album("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp))
+ add(Album("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp))
+ add(Album("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp))
}
+// binding.homeAlbumImgIv1.setOnClickListener{
+// (context as MainActivity).supportFragmentManager.beginTransaction().replace(R.id.main_frm,AlbumFragment()).commitAllowingStateLoss()
+// }
+
val bannerAdapter = BannerVPAdapter(this)
bannerAdapter.addFragment(BannerFragment(R.drawable.img_home_viewpager_exp))
diff --git "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/MainActivity.kt" "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/MainActivity.kt"
index 0df9847..126a6af 100644
--- "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/MainActivity.kt"
+++ "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/MainActivity.kt"
@@ -3,20 +3,26 @@ package com.example.flo
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
+import android.view.Display.Mode
import com.example.flo.databinding.ActivityMainBinding
+import com.google.gson.Gson
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
+ private var song: Song = Song()
+ private var gson: Gson = Gson()
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ setTheme(R.style.Theme_FLO)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
initBottomNavigation()
- val song = Song(binding.mainMiniplayerTitleTv.text.toString(), binding.mainMiniplayerSingerTv.text.toString(), 0, 60, false)
+ val song = Song(binding.mainMiniplayerTitleTv.text.toString(), binding.mainMiniplayerSingerTv.text.toString(), 0, 60, false, "music_lilac")
binding.mainPlayerCl.setOnClickListener{
val intent = Intent(this, SongActivity::class.java)
@@ -25,6 +31,7 @@ class MainActivity : AppCompatActivity() {
intent.putExtra("second", song.second)
intent.putExtra("playTime", song.playTime)
intent.putExtra("isPlaying", song.isPlaying)
+ intent.putExtra("music", song.music)
startActivity(intent)
}
@@ -70,4 +77,24 @@ class MainActivity : AppCompatActivity() {
false
}
}
+
+ private fun setMiniPlayer(song: Song){
+ binding.mainMiniplayerTitleTv.text = song.title
+ binding.mainMiniplayerSingerTv.text = song.singer
+ binding.mainMiniplayerProgressSb.progress = (song.second*100000)/song.playTime
+ }
+
+ override fun onStart() {
+ super.onStart()
+ val sharedPreferences = getSharedPreferences("song", MODE_PRIVATE)
+ val songJson = sharedPreferences.getString("songData", null)
+
+ song = if(songJson == null){
+ Song("라일락", "아이유(IU)", 0, 60, false, "music_lilac")
+ } else {
+ gson.fromJson(songJson, Song::class.java)
+ }
+
+ setMiniPlayer(song)
+ }
}
\ No newline at end of file
diff --git "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/Song.kt" "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/Song.kt"
index bb6118f..c1c924b 100644
--- "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/Song.kt"
+++ "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/Song.kt"
@@ -7,5 +7,6 @@ data class Song(
var singer: String = "",
var second: Int = 0,
var playTime: Int = 0,
- var isPlaying: Boolean = false
+ var isPlaying: Boolean = false,
+ var music: String = ""
)
diff --git "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/SongActivity.kt" "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/SongActivity.kt"
index f4bf4de..f0eb3f7 100644
--- "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/SongActivity.kt"
+++ "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/java/com/example/flo/SongActivity.kt"
@@ -1,12 +1,15 @@
package com.example.flo
+import android.media.MediaPlayer
import android.os.Bundle
import android.os.PersistableBundle
import android.util.Log
import android.view.LayoutInflater
+import android.view.MenuInflater
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import com.example.flo.databinding.ActivitySongBinding
+import com.google.gson.Gson
import java.util.Timer
class SongActivity : AppCompatActivity() {
@@ -14,6 +17,8 @@ class SongActivity : AppCompatActivity() {
lateinit var binding: ActivitySongBinding
lateinit var song: Song
lateinit var timer: Timer
+ private var mediaplayer: MediaPlayer? = null
+ private var gson: Gson = Gson()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -40,11 +45,6 @@ class SongActivity : AppCompatActivity() {
}
- override fun onDestroy() {
- super.onDestroy()
- timer.interrupt()
- }
-
private fun initSong(){
if(intent.hasExtra("title") && intent.hasExtra("singer")){
@@ -53,7 +53,8 @@ class SongActivity : AppCompatActivity() {
intent.getStringExtra("singer")!!,
intent.getIntExtra("second", 0),
intent.getIntExtra("playTime", 0),
- intent.getBooleanExtra("isPlaying", false)
+ intent.getBooleanExtra("isPlaying", false),
+ intent.getStringExtra("music")!!
)
}
startTimer()
@@ -65,7 +66,8 @@ class SongActivity : AppCompatActivity() {
binding.songStartTimeTv.text = String.format("%02d:%02d",song.second / 60, song.second % 60)
binding.songEndTimeTv.text = String.format("%02d:%02d",song.playTime / 60, song.playTime % 60)
binding.songProgressSb.progress = (song.second * 1000 / song.playTime)
-
+ val music = resources.getIdentifier(song.music, "raw", this.packageName)
+ mediaplayer = MediaPlayer.create(this, music )
setPlayerStatus(song.isPlaying)
}
@@ -75,10 +77,14 @@ class SongActivity : AppCompatActivity() {
if(isPlaying){
binding.songMiniplayerIv.visibility = View.GONE
binding.songPauseIv.visibility = View.VISIBLE
+ mediaplayer?.start()
}
else {
binding.songMiniplayerIv.visibility = View.VISIBLE
binding.songPauseIv.visibility = View.GONE
+ if(mediaplayer?.isPlaying == true){
+ mediaplayer?.pause()
+ }
}
}
@@ -126,5 +132,24 @@ class SongActivity : AppCompatActivity() {
}
}
+
+ override fun onPause() {
+ super.onPause()
+ setPlayerStatus(false)
+ song.second = ((binding.songProgressSb.progress * song.playTime)/100)/1000
+ val sharedPreferences = getSharedPreferences("song", MODE_PRIVATE)
+ val editor = sharedPreferences.edit()
+ val songJson = gson.toJson(song)
+ editor.putString("songData", songJson)
+
+ editor.apply()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ timer.interrupt()
+ mediaplayer?.release()
+ mediaplayer = null
+ }
}
diff --git "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/res/layout/fragment_home.xml" "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/res/layout/fragment_home.xml"
index d040bd8..a7f3e3f 100644
--- "a/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/res/layout/fragment_home.xml"
+++ "b/\353\213\211-\354\204\234\354\244\200\354\235\265/app/src/main/res/layout/fragment_home.xml"
@@ -213,139 +213,139 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/home_pannel_background_iv" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -358,15 +358,15 @@
-
-
-
-
-
-
-
-
-
+
+ app:layout_constraintTop_toBottomOf="@id/home_today_music_album_rv"/>
true
+
+
+
\ No newline at end of file