Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion 닉-서준익/.idea/deploymentTargetDropDown.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion 닉-서준익/.idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions 닉-서준익/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
6 changes: 5 additions & 1 deletion 닉-서준익/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.flo">

<application
Expand All @@ -8,10 +9,12 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/Theme.FLO">
<activity
android:name=".MainActivity"
android:exported="true">
android:exported="true"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand All @@ -23,6 +26,7 @@
android:exported="true">

</activity>

</application>

</manifest>
10 changes: 10 additions & 0 deletions 닉-서준익/app/src/main/java/com/example/flo/Album.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.example.flo

import java.util.*


data class Album(
var title: String? = "",
var singer: String? = "",
var coverImg: Int? = null
)
13 changes: 11 additions & 2 deletions 닉-서준익/app/src/main/java/com/example/flo/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import com.example.flo.databinding.FragmentHomeBinding
class HomeFragment : Fragment() {

lateinit var binding: FragmentHomeBinding
private var albumDates = ArrayList<Album>()

override fun onCreateView(
inflater: LayoutInflater,
Expand All @@ -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))
Expand Down
29 changes: 28 additions & 1 deletion 닉-서준익/app/src/main/java/com/example/flo/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)

}
Expand Down Expand Up @@ -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)
}
}
3 changes: 2 additions & 1 deletion 닉-서준익/app/src/main/java/com/example/flo/Song.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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 = ""
)
39 changes: 32 additions & 7 deletions 닉-서준익/app/src/main/java/com/example/flo/SongActivity.kt
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
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() {

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)
Expand All @@ -40,11 +45,6 @@ class SongActivity : AppCompatActivity() {

}

override fun onDestroy() {
super.onDestroy()
timer.interrupt()
}


private fun initSong(){
if(intent.hasExtra("title") && intent.hasExtra("singer")){
Expand All @@ -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()
Expand All @@ -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)

}
Expand All @@ -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()
}
}
}

Expand Down Expand Up @@ -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
}
}

Loading