Skip to content
Merged
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
1 change: 0 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ dependencies {

// Coroutine
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3'
implementation("io.coil-kt:coil:2.0.0-rc03")

// RoomDB
def room_version = '2.5.2'
Expand Down
7 changes: 0 additions & 7 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,17 +66,10 @@
</intent-filter>
</activity>

<activity
android:name=".presentation.ui.searchList.SearchListActivity"
android:exported="true">


</activity>

<activity
android:name=".presentation.ui.mypage.ProfileActivity"
android:exported="true">

</activity>


Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.example.cherry_pick_android.presentation.ui.mypage

import android.Manifest
import android.content.ContentValues
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.MediaStore
import android.util.Log
Expand All @@ -13,6 +15,8 @@ import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import coil.load
import com.bumptech.glide.Glide
import com.example.cherry_pick_android.R
import com.example.cherry_pick_android.databinding.ActivityProfileBinding
import com.example.cherry_pick_android.presentation.ui.jobGroup.JobGroupActivity
Expand All @@ -26,20 +30,25 @@ class ProfileActivity : AppCompatActivity(),CameraDialogInterface {
private lateinit var binding: ActivityProfileBinding

companion object {
const val REQUEST_CODE_PERMISSIONS = 1001
const val ALBUM_OK = 2002
const val CAMERA_OK = 2003
const val BASIC_OK = 2004
const val TAG = "ProfileActivity"
}


private fun checkPermission(permissions: Array<String>): Boolean {
return permissions.all {
ContextCompat.checkSelfPermission(this, it) == PackageManager.PERMISSION_GRANTED
// 요청하고자 하는 권한들
private val permissions = arrayOf(
Manifest.permission.CAMERA,
// Manifest.permission.WRITE_EXTERNAL_STORAGE,
// Manifest.permission.READ_EXTERNAL_STORAGE
)
// 권한 확인 응답
private val getPermissionResult = registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()
) {
if (it.all { permission -> permission.value == true }) {
} else {
Toast.makeText(this, "권한을 거부하였습니다.", Toast.LENGTH_SHORT).show()
}
}

// 촬영한 사진 불러오기
// 이미지 로드
private val readImage = registerForActivityResult(
ActivityResultContracts.GetContent()) {
Expand All @@ -48,18 +57,22 @@ class ProfileActivity : AppCompatActivity(),CameraDialogInterface {

// 카메라를 실행한 후 찍은 사진을 저장
var pictureUri: Uri? = null
private val getTakePicture = registerForActivityResult(ActivityResultContracts.TakePicture()) {
if(it) {
pictureUri.let { binding.ivProfilePic.setImageURI(pictureUri) }
private val getTakePicture = registerForActivityResult(
ActivityResultContracts.TakePicture()) {
if(it) { pictureUri.let {
Glide.with(this).load(pictureUri).circleCrop().into(binding.ivProfilePic)
}
}
}
// 파일 불러오기
private val getContentImage = registerForActivityResult(
ActivityResultContracts.GetContent()) {
uri ->
uri.let { binding.ivProfilePic.setImageURI(uri)
}
// 앨범으로부터 이미지 불러오기
private val getResultImage = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()) {
if (it.resultCode == RESULT_OK) {
var imageUrl = it.data?.data
Glide.with(this).load(imageUrl).circleCrop().into(binding.ivProfilePic)
}
}

// 직군선택 결과 받아오기
private val getResultText = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()){
Expand Down Expand Up @@ -98,30 +111,25 @@ class ProfileActivity : AppCompatActivity(),CameraDialogInterface {
dialog.show(this.supportFragmentManager, "CameraDialog")
}
}
override fun onCameraClick(cameraMenu: String) {
val camera_menu = cameraMenu

//readImage.launch()
// 권한 확인
//checkPermission.launch(permissionList)
//if (!checkPermission(permissions)) {
// requestPermissions(permissions, REQUEST_CODE_PERMISSIONS)
//}

if (camera_menu=="@string/profile_img_fromAlbum"){
getContentImage.launch("image/*")
}
else if (camera_menu=="@string/profile_img_fromCamera"){
pictureUri = createImageFile()
getTakePicture.launch(pictureUri)
}
else if (camera_menu=="@string/profile_img_basic"){
binding.ivProfilePic.setImageResource(R.drawable.ic_my_page_user)
}
else if (camera_menu=="@string/profile_img_cancel"){
// 변화없음
}
// 앨범 이미지 불러오기
override fun onAlbumClick(intent: Intent) {
checkPermission(permissions)
getResultImage.launch(intent)
}
// 카메라 촬영 후 이미지 불러오기
override fun onCameraClick(intent:Intent) {
checkPermission(permissions)
pictureUri = createImageFile()
getTakePicture.launch(pictureUri)
}
// 기본 이미지로 변경
override fun onBasicClick(intent: Intent) {
binding.ivProfilePic.setImageDrawable(getDrawable(R.drawable.ic_my_page_user))
}
// 이미지 변경 취소
override fun onCancelClick(intent: Intent) { }

// 고유 이름으로 이미지 파일 생성
private fun createImageFile(): Uri? {
val now = SimpleDateFormat("yyMMdd_HHmmss").format(System.currentTimeMillis())
val content = ContentValues().apply {
Expand All @@ -131,11 +139,10 @@ class ProfileActivity : AppCompatActivity(),CameraDialogInterface {
return contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, content)
}


// 직군정보 변경페이지로 이동
private fun ChangeJobInterest() {
binding.ibtnProfileJobChange.setOnClickListener {
//val intent = Intent(this,JobGroupActivity::class.java)
//startActivity(intent)
val intent = Intent(this, JobGroupActivity::class.java)
getResultText.launch(intent)
}
Expand Down Expand Up @@ -173,4 +180,18 @@ class ProfileActivity : AppCompatActivity(),CameraDialogInterface {
}
}

private fun checkPermission(permissions: Array<String>){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// 권한 허용 여부 확인
if (permissions.all {
ContextCompat.checkSelfPermission(this, it) == PackageManager.PERMISSION_GRANTED
}) {
Toast.makeText(this, "카메라 권한이 허용되어 있습니다.", Toast.LENGTH_SHORT).show()
}
// 권한 요청
else {
getPermissionResult.launch(permissions)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
Expand All @@ -24,6 +25,8 @@ import androidx.core.app.ActivityCompat.startActivityForResult
import androidx.core.content.ContextCompat
import androidx.core.content.ContextCompat.getColor
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.setFragmentResult
import coil.load
import com.example.cherry_pick_android.R
import com.example.cherry_pick_android.databinding.DialogCameraBinding
import com.example.cherry_pick_android.databinding.DialogGenderBinding
Expand All @@ -37,54 +40,69 @@ class CameraDialog (
): DialogFragment() {
companion object {
const val TAG = "CameraDialog"
const val PICK_IMAGE_FROM_ALBUM = 0
}

private var cameraDialogInterface: CameraDialogInterface? = null
private val binding: DialogCameraBinding by lazy {
DialogCameraBinding.inflate(layoutInflater)
}

init {
this.cameraDialogInterface = cameraDialogInterface
}

// 요청하고자 하는 권한들
private val permissions = arrayOf(
Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE)

//var hasCameraPerm = checkSelfPermission(android.Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
//var hasWritePerm = checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
//var hasReadPerm = checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
dialog?.window?.setDimAmount(0.5F)
dialog?.window?.setDimAmount(0.7F)
dialog?.window?.setGravity(Gravity.BOTTOM)

dialog?.setCancelable(false)

binding.tvImgFromAlbum.setOnClickListener {
//binding.tvImgFromAlbum.setTextColor(requireContext().getColor(R.color.main_pink))
//context?.let { it1 -> binding.tvImgFromAlbum.setTextColor(it1.getColor(R.color.main_pink)) }
this.cameraDialogInterface?.onCameraClick(binding.tvImgFromAlbum.toString())
Log.d(TAG, "앨범으로부터 이미지변경")
var photoPickerIntent = Intent(Intent.ACTION_PICK)
photoPickerIntent.type = "image/*"
this.cameraDialogInterface?.onAlbumClick(photoPickerIntent)

dismiss()
}
binding.tvImgFromCamera.setOnClickListener {
Log.d(TAG, "카메라로부터 이미지변경")
this.cameraDialogInterface?.onCameraClick(binding.tvImgFromCamera.toString())
var photoCameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
this.cameraDialogInterface?.onCameraClick(photoCameraIntent)

dismiss()
}
binding.tvImgBasic.setOnClickListener {
this.cameraDialogInterface?.onCameraClick(binding.tvImgBasic.toString())
Log.d(TAG, "기본 이미지로 변경")
activity?.let {
var photoBasicIntent = Intent(it, ProfileActivity::class.java)
this.cameraDialogInterface?.onBasicClick(photoBasicIntent)
}

dismiss()
}
binding.tvImgCancel.setOnClickListener {
Log.d(TAG, "프로필이미지변경 취소")
this.cameraDialogInterface?.onCameraClick(binding.tvImgCancel.toString())
Log.d(TAG, "프로필이미지 변경 취소")
activity?.let {
var photoCancelIntent = Intent(it, ProfileActivity::class.java)
this.cameraDialogInterface?.onCancelClick(photoCancelIntent)
}
dismiss()
}
return binding.root
}






}


Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package com.example.cherry_pick_android.presentation.ui.mypage.dialog

import android.content.Intent

interface CameraDialogInterface {
fun onCameraClick(cameraMenu: String)
fun onAlbumClick(intent : Intent)
fun onCameraClick(intent : Intent)
fun onBasicClick(intent: Intent)
fun onCancelClick(intent: Intent)
}
2 changes: 1 addition & 1 deletion app/src/main/res/drawable/bg_camera_dialog.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<size android:width="350dp" android:height="229dp" />
<solid android:color="@color/white" />
<corners android:radius="10dp" />
<stroke
android:width="1dp"
Expand Down