Skip to content

Commit

Permalink
share button test
Browse files Browse the repository at this point in the history
  • Loading branch information
ing03201 authored and DokySp committed Oct 11, 2024
1 parent 2e92035 commit 929ca60
Show file tree
Hide file tree
Showing 7 changed files with 82 additions and 14 deletions.
15 changes: 14 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,20 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:usesCleartextTraffic="true" />
android:usesCleartextTraffic="true" >

<!-- To use Sharing feature -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.foke.together.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_files" />
</provider>

</application>
<!-- TODO: temporary add usesCleartextTraffic. remove later -->

<!-- TODO: support back-up-->
Expand Down
18 changes: 18 additions & 0 deletions app/src/main/res/xml/provider_files.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<cache-path
name="cache"
path="." /> <!--Context.getCacheDir() 내부 저장소-->
<files-path
name="files"
path="." /> <!--Context.getFilesDir() 내부 저장소-->
<external-path
name="external"
path="."/> <!-- Environment.getExternalStorageDirectory() 외부 저장소-->
<external-cache-path
name="external-cache"
path="."/> <!-- Context.getExternalCacheDir() 외부 저장소-->
<external-files-path
name="external-files"
path="."/> <!-- Context.getExternalFilesDir() 외부 저장소-->
</paths>
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class ImageRepository @Inject constructor(
return uriList
}

//TODO: file작업코드는 repository에서 하지말고 Util로 옮겨놓기
override suspend fun clearCacheDir() {
context.cacheDir.listFiles().forEach {
if(it.name.contains(".jpg")){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ import androidx.compose.ui.unit.dp
import androidx.constraintlayout.compose.ChainStyle
import androidx.constraintlayout.compose.ConstraintLayout
import androidx.constraintlayout.compose.Dimension
import androidx.core.content.FileProvider
import androidx.core.net.toFile
import com.foke.together.presenter.frame.FourCutFrame
import com.foke.together.presenter.theme.FourCutTogetherTheme
import com.foke.together.presenter.theme.highContrastDarkColorScheme
Expand All @@ -28,6 +30,7 @@ import androidx.lifecycle.compose.LifecycleEventEffect
import coil.compose.AsyncImage
import coil.request.ImageRequest
import com.foke.together.presenter.viewmodel.ShareViewModel
import com.foke.together.util.ImageFileUtil

@Composable
fun ShareScreen(
Expand Down Expand Up @@ -87,7 +90,10 @@ fun ShareScreen(
}

IconButton(
onClick = { viewModel.printImage() },
onClick = {
val finalTwoRowImageUri = viewModel.getFinalTwoImageUri()
ImageFileUtil.printFromUri(context,finalTwoRowImageUri)
},
modifier = Modifier.constrainAs(printButton) {
top.linkTo(homeButton.bottom)
end.linkTo(parent.end, margin = 30.dp)
Expand All @@ -105,7 +111,15 @@ fun ShareScreen(
}

IconButton(
onClick = {viewModel.shareImage()},
onClick = {
val finalFile = finalSingleImageUri.toFile()
val contentUri = FileProvider.getUriForFile(
context,
"com.foke.together.fileprovider",
finalFile
)
ImageFileUtil.shareUri(context, contentUri)
},
modifier = Modifier.constrainAs(shareButton) {
top.linkTo(printButton.bottom)
end.linkTo(parent.end, margin = 30.dp)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@ package com.foke.together.presenter.viewmodel

import android.content.Context
import android.net.Uri
import androidx.compose.ui.platform.LocalContext
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.foke.together.util.AppPolicy
import com.foke.together.util.ImageFileUtil
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.launch
import javax.inject.Inject

@HiltViewModel
Expand All @@ -16,18 +19,28 @@ class ShareViewModel @Inject constructor(
fun getFinalSingleImageUri(): Uri {
var finalSingleImageUri: Uri = Uri.EMPTY
context.cacheDir.listFiles().forEach {
file -> if (file.name.contains("final_single_row.jpg")) { finalSingleImageUri = Uri.fromFile(file) }
file -> if (file.name.contains("${AppPolicy.SINGLE_ROW_FINAL_IMAGE_NAME}")) { finalSingleImageUri = Uri.fromFile(file) }
}
return finalSingleImageUri
}
fun shareImage() {

}
fun printImage() {

fun getFinalTwoImageUri(): Uri {
var finalTwoImageUri: Uri = Uri.EMPTY
context.cacheDir.listFiles().forEach {
file -> if (file.name.contains("${AppPolicy.TWO_ROW_FINAL_IMAGE_NAME}")) { finalTwoImageUri = Uri.fromFile(file) }
}
return finalTwoImageUri
}

fun downloadImage() {

val imageUri = getFinalSingleImageUri()
val imageBitmap = ImageFileUtil.getBitmapFromUri(context, imageUri)
viewModelScope.launch {
ImageFileUtil.saveBitmapToStorage(
context,
imageBitmap,
AppPolicy.SINGLE_ROW_FINAL_IMAGE_NAME
)
}
}
}
4 changes: 2 additions & 2 deletions util/src/main/java/com/foke/together/util/AppPolicy.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.foke.together.util
object AppPolicy {
const val isDebugMode = true

const val DEFAULT_EXTERNAL_CAMERA_IP = "0.0.0.0"
const val DEFAULT_EXTERNAL_CAMERA_IP = "192.168.0.71:5000"

// network
const val WEB_SERVER_URL = "https://4cuts.store/"
Expand All @@ -12,7 +12,7 @@ object AppPolicy {
const val WEB_WRITE_TIMEOUT = 10L
const val WEB_FILE_MAX_CONTENT_LENGTH = 20971520

const val EXTERNAL_CAMERA_DEFAULT_SERVER_URL = "http://0.0.0.0"
const val EXTERNAL_CAMERA_DEFAULT_SERVER_URL = "http://192.168.0.71:5000"
const val EXTERNAL_CAMERA_CONNECT_TIMEOUT = 10L
const val EXTERNAL_CAMERA_READ_TIMEOUT = 10L
const val EXTERNAL_CAMERA_WRITE_TIMEOUT = 10L
Expand Down
13 changes: 11 additions & 2 deletions util/src/main/java/com/foke/together/util/ImageFileUtil.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ import android.content.Context
import android.content.Intent
import android.content.Intent.createChooser
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.media.MediaScannerConnection
import android.net.Uri
import android.os.Environment
import androidx.compose.ui.graphics.asAndroidBitmap
import androidx.compose.ui.graphics.layer.GraphicsLayer
import androidx.core.content.ContextCompat.startActivity
import androidx.core.net.toFile
import androidx.print.PrintHelper
import kotlinx.coroutines.suspendCancellableCoroutine
import java.io.File
Expand Down Expand Up @@ -84,7 +86,7 @@ object ImageFileUtil {
}

// TODO: 파일 분리하기
fun shareBitmap(context: Context, uri: Uri) {
fun shareUri(context: Context, uri: Uri) {
val intent = Intent(Intent.ACTION_SEND).apply {
type = "image/jpg"
putExtra(Intent.EXTRA_STREAM, uri)
Expand All @@ -93,8 +95,15 @@ object ImageFileUtil {
startActivity(context, createChooser(intent, "Share your image"), null)
}

fun printBitmap(context: Context, bitmap: Bitmap){
fun getBitmapFromUri(context: Context, uri: Uri): Bitmap {
val file = uri.toFile()
return BitmapFactory.decodeFile(file.absolutePath)
}

fun printFromUri(context: Context, uri: Uri){
// can use getActivity()
val file = uri.toFile()
val bitmap = BitmapFactory.decodeFile(file.absolutePath)
val photoPrinter = PrintHelper(context)
photoPrinter.printBitmap("Print", bitmap)
}
Expand Down

0 comments on commit 929ca60

Please sign in to comment.