Экспорт

This commit is contained in:
Vineyro 2023-11-10 17:03:55 +07:00
parent bc569581ad
commit fb616a9f29
4 changed files with 58 additions and 22 deletions

View File

@ -13,8 +13,8 @@ android {
applicationId "llc.arma.ble"
minSdk 26
targetSdk 33
versionCode 10
versionName "1.2.10"
versionCode 12
versionName "1.2.12"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
@ -24,7 +24,7 @@ android {
buildTypes {
release {
minifyEnabled true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

View File

@ -18,6 +18,13 @@
<uses-feature android:name="android.hardware.location.gps" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="29" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
@ -27,7 +34,8 @@
android:supportsRtl="true"
android:theme="@style/Theme.App.Starting"
tools:targetApi="31"
android:name=".app.framework.App">
android:name=".app.framework.App"
android:requestLegacyExternalStorage="true">
<provider
android:name="androidx.core.content.FileProvider"

View File

@ -135,9 +135,23 @@ class MainActivity : ComponentActivity() {
) {
val multiplePermissionsState =
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
rememberMultiplePermissionsState(
listOf(
Manifest.permission.READ_MEDIA_VIDEO,
Manifest.permission.READ_MEDIA_IMAGES,
Manifest.permission.BLUETOOTH_SCAN,
Manifest.permission.BLUETOOTH_CONNECT
)
)
}else{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
rememberMultiplePermissionsState(
listOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.BLUETOOTH_SCAN,
Manifest.permission.BLUETOOTH_CONNECT
)
@ -145,11 +159,14 @@ class MainActivity : ComponentActivity() {
} else {
rememberMultiplePermissionsState(
listOf(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
)
)
}
}
if (multiplePermissionsState.allPermissionsGranted) {

View File

@ -1,7 +1,10 @@
package llc.arma.ble.data
import android.R.attr.src
import android.app.Application
import android.icu.text.SimpleDateFormat
import android.os.Environment
import android.os.FileUtils
import llc.arma.ble.R
import llc.arma.ble.domain.model.Ble
import llc.arma.ble.domain.repository.XlsxRepository
@ -15,29 +18,28 @@ import java.util.Date
import java.util.UUID
import javax.inject.Inject
class XlsxRepositoryImpl @Inject constructor(
private val application: Application
) : XlsxRepository {
override fun exportToXls(data: List<Ble.Accelerometer.HistoryPoint>): File {
val formatter = SimpleDateFormat("dd.MM.yyyy HH:mm")
val file = File(application.filesDir, "${UUID.randomUUID()}.xlsx")
file.createNewFile()
val mailFile = File(application.filesDir, "${UUID.randomUUID()}.xlsx")
mailFile.createNewFile()
when(data.firstOrNull()){
is Ble.Accelerometer.HistoryPoint.Vibration -> {
IOUtils.copy(application.resources.openRawResource(R.raw.measure_single_axis), FileOutputStream(file))
IOUtils.copy(application.resources.openRawResource(R.raw.measure_single_axis), FileOutputStream(mailFile))
}
else -> {
IOUtils.copy(application.resources.openRawResource(R.raw.measure_multiple_axis), FileOutputStream(file))
IOUtils.copy(application.resources.openRawResource(R.raw.measure_multiple_axis), FileOutputStream(mailFile))
}
}
val fileIn = FileInputStream(file)
val fileIn = FileInputStream(mailFile)
val workbook = WorkbookFactory.create(fileIn)
val worksheet = workbook.getSheetAt(0) as XSSFSheet
@ -78,11 +80,20 @@ class XlsxRepositoryImpl @Inject constructor(
}
fileIn.close()
val saveFos = FileOutputStream(file)
val saveFos = FileOutputStream(mailFile)
workbook.write(saveFos)
workbook.close()
saveFos.close()
return file
val sharedFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "${UUID.randomUUID()}.xlsx")
sharedFile.createNewFile()
val sharedSaveFos = FileOutputStream(sharedFile)
workbook.write(sharedSaveFos)
sharedSaveFos.close()
workbook.close()
return mailFile
}
}