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
24 changes: 16 additions & 8 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />

<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
Expand All @@ -14,18 +16,25 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.UMC_9th"
tools:targetApi="31" >
tools:targetApi="31">
<activity
android:name="com.example.umc_9th.LoginActivity"
android:exported="false" />
<activity
android:name="com.example.umc_9th.SignUpActivity"
android:exported="false"
android:theme="@style/Theme.UMC_9th" />

<service
android:name="com.example.umc_9th.MusicService"
android:foregroundServiceType="mediaPlayback"
android:enabled="true"
android:exported="true"
android:permission="TODO">
</service>
android:foregroundServiceType="mediaPlayback"
android:permission="TODO" />

<activity
android:name="com.example.umc_9th.SplashActivity"
android:exported="true" >
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand All @@ -36,8 +45,7 @@
android:name="com.example.umc_9th.MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.UMC_9th" >
</activity>
android:theme="@style/Theme.UMC_9th" />
<activity
android:name="com.example.umc_9th.SongActivity"
android:exported="false" />
Expand Down
12 changes: 11 additions & 1 deletion app/src/main/java/com/example/umc_9th/AlbumFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,15 @@ import android.view.View
import android.view.ViewGroup
import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayoutMediator
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase
import umc.study.umc_9th.R
import umc.study.umc_9th.databinding.FragmentAlbumBinding

class AlbumFragment : Fragment() {
private lateinit var binding : FragmentAlbumBinding
private lateinit var uid: String
private lateinit var userAlbumRef : DatabaseReference
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
Expand Down Expand Up @@ -39,7 +43,13 @@ class AlbumFragment : Fragment() {
else -> ""
}
}.attach()

uid = loginStorage(requireContext()).getUid().toString()
userAlbumRef = FirebaseDatabase.getInstance().getReference("users").child(uid).child("albums")
binding.albumLike.setOnClickListener {
userAlbumRef.child(binding.albumTitle.text.toString()).child("title").setValue(binding.albumTitle.text.toString())
userAlbumRef.child(binding.albumTitle.text.toString()).child("singer").setValue(binding.albumSinger.text.toString())
binding.albumLike.setImageResource(R.drawable.ic_my_like_on)
}
return binding.root
}

Expand Down
19 changes: 19 additions & 0 deletions app/src/main/java/com/example/umc_9th/LockerFragment.kt
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package com.example.umc_9th

import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.viewpager2.widget.ViewPager2
import com.example.umc_9th.HomeFragment.OnAlbumButtonClickListener
import com.google.android.material.tabs.TabLayoutMediator
import umc.study.umc_9th.databinding.FragmentLockerBinding

class LockerFragment : Fragment() {
private lateinit var binding : FragmentLockerBinding
private var listener: OnAlbumButtonClickListener? = null
private lateinit var uidStorage : loginStorage
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
Expand All @@ -27,6 +31,21 @@ class LockerFragment : Fragment() {
else -> ""
}
}.attach()
uidStorage = loginStorage(requireContext())
if(uidStorage.getUid() != "") {
binding.gotoLogin.text = "로그아웃"
}
else {
binding.gotoLogin.text = "로그인"
}
binding.gotoLogin.setOnClickListener {
if(uidStorage.getUid() == "") startActivity(Intent(requireActivity(), LoginActivity::class.java))
else {
uidStorage.setUid("")
binding.gotoLogin.text = "로그인"
}
}

return binding.root
}

Expand Down
70 changes: 70 additions & 0 deletions app/src/main/java/com/example/umc_9th/LoginActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.example.umc_9th

import android.content.Intent
import android.os.Bundle
import android.text.InputType
import android.util.Log
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import com.google.firebase.database.getValue
import umc.study.umc_9th.R
import umc.study.umc_9th.databinding.ActivityLoginBinding
import umc.study.umc_9th.databinding.ActivitySignUpBinding

class LoginActivity : AppCompatActivity() {
private val userRef = FirebaseDatabase.getInstance().getReference("users")
private lateinit var binding : ActivityLoginBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityLoginBinding.inflate(layoutInflater)
setContentView(binding.root)

binding.loginButton.setOnClickListener {
val inpId = binding.idToLogin.text.toString()
var inpPwd = binding.PwdToLogin.text.toString()
val query = userRef.orderByChild("id").equalTo(inpId)

query.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.exists()) {
for (child in snapshot.children) {
if(child.child("password").value == inpPwd) Login(child.key.toString())
else Toast.makeText(applicationContext, "사용자 데이터가 없습니다", Toast.LENGTH_SHORT).show()
}
} else {
Toast.makeText(applicationContext, "사용자 데이터가 없습니다", Toast.LENGTH_SHORT).show()
}
}
override fun onCancelled(error: DatabaseError) {
Log.e("RealtimeDB", "쿼리 실패", error.toException())
}
})

}
binding.lookPwd.setOnClickListener {
if(binding.PwdToLogin.inputType == InputType.TYPE_TEXT_VARIATION_PASSWORD) {
binding.PwdToLogin.inputType = InputType.TYPE_CLASS_TEXT
binding.lookPwd.setImageResource(R.drawable.btn_input_password_off)
}
else {
binding.PwdToLogin.inputType = InputType.TYPE_TEXT_VARIATION_PASSWORD
binding.lookPwd.setImageResource(R.drawable.btn_input_password)
}
}
binding.gotoSignup.setOnClickListener {
startActivity(Intent(this, SignUpActivity::class.java))
}
}
fun Login(id : String) {
val uidStorage = loginStorage(this)
uidStorage.setUid(id)
finish();
}
}
7 changes: 6 additions & 1 deletion app/src/main/java/com/example/umc_9th/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,12 @@ class MainActivity : AppCompatActivity(), HomeFragment.OnAlbumButtonClickListene
.commit()
true
}

R.id.Search -> {
supportFragmentManager.beginTransaction()
.replace(R.id.fragmentContainerView, SearchFragment())
.commit()
true
}
R.id.Locker -> {
supportFragmentManager.beginTransaction()
.replace(R.id.fragmentContainerView, LockerFragment())
Expand Down
26 changes: 26 additions & 0 deletions app/src/main/java/com/example/umc_9th/SearchFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.example.umc_9th

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayoutMediator
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase
import umc.study.umc_9th.R
import umc.study.umc_9th.databinding.FragmentAlbumBinding
import umc.study.umc_9th.databinding.FragmentSearchBinding

class SearchFragment : Fragment() {
private lateinit var binding : FragmentSearchBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentSearchBinding.inflate(layoutInflater)
return binding.root
}

}
56 changes: 56 additions & 0 deletions app/src/main/java/com/example/umc_9th/SignUpActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package com.example.umc_9th

import android.os.Bundle
import android.text.InputType
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.google.firebase.database.FirebaseDatabase
import umc.study.umc_9th.R
import umc.study.umc_9th.databinding.ActivitySignUpBinding

class SignUpActivity : AppCompatActivity() {

private val userRef = FirebaseDatabase.getInstance().getReference("users")
private lateinit var binding : ActivitySignUpBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySignUpBinding.inflate(layoutInflater)
setContentView(binding.root)

binding.signinBtn.setOnClickListener {
if(binding.idToSignup.text.toString() != "") {
if(binding.pwdToSignup.text.toString() == binding.pwdVerify.text.toString()) {
CreateNewAccount(binding.idToSignup.text.toString(),binding.pwdToSignup.text.toString() )
}
}
}
binding.lookPwda.setOnClickListener {
if(binding.pwdToSignup.inputType == InputType.TYPE_TEXT_VARIATION_PASSWORD) {
binding.pwdToSignup.inputType = InputType.TYPE_CLASS_TEXT
binding.lookPwda.setImageResource(R.drawable.btn_input_password_off)
}
else {
binding.pwdToSignup.inputType = InputType.TYPE_TEXT_VARIATION_PASSWORD
binding.lookPwda.setImageResource(R.drawable.btn_input_password)
}
}
binding.lookPwdb.setOnClickListener {
if(binding.pwdVerify.inputType == InputType.TYPE_TEXT_VARIATION_PASSWORD) {
binding.pwdVerify.inputType = InputType.TYPE_CLASS_TEXT
binding.lookPwdb.setImageResource(R.drawable.btn_input_password_off)
}
else {
binding.pwdVerify.inputType = InputType.TYPE_TEXT_VARIATION_PASSWORD
binding.lookPwdb.setImageResource(R.drawable.btn_input_password)
}
}

}
fun CreateNewAccount(id : String, password : String) {
userRef.child("sampleID").child("id").setValue(id)
userRef.child("sampleID").child("password").setValue(password)
finish()
}
}
4 changes: 2 additions & 2 deletions app/src/main/java/com/example/umc_9th/SongActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ import umc.study.umc_9th.databinding.ActivitySongBinding

class SongActivity : AppCompatActivity() {

private val uid = "asdfqwer1234"
private val userSongsRef = FirebaseDatabase.getInstance().getReference("songs").child(uid)
private val uid: String = loginStorage(this).getUid().toString()
private val userSongsRef = FirebaseDatabase.getInstance().getReference(uid).child("songs")

private lateinit var binding: ActivitySongBinding
private var songID: Int = 0
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/java/com/example/umc_9th/entitiy/UserEntity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.example.umc_9th.entitiy

data class UserEntity(
var id: String,
var password: String
)
20 changes: 20 additions & 0 deletions app/src/main/java/com/example/umc_9th/loginStorage.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.example.umc_9th

import android.content.Context

class loginStorage(context: Context) {
private val preferences = context.getSharedPreferences("uid",
Context.MODE_PRIVATE)

companion object {
private const val uid = "uid"
}

fun getUid(): String? {
return preferences.getString(uid, "")
}

fun setUid(_uid : String) {
preferences.edit().putString(uid, _uid).apply()
}
}
Loading