Экспорт

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" applicationId "llc.arma.ble"
minSdk 26 minSdk 26
targetSdk 33 targetSdk 33
versionCode 10 versionCode 12
versionName "1.2.10" versionName "1.2.12"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables { vectorDrawables {
@ -24,7 +24,7 @@ android {
buildTypes { buildTypes {
release { release {
minifyEnabled true minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 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.location.gps" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/> <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 <application
android:allowBackup="true" android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
@ -27,7 +34,8 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.App.Starting" android:theme="@style/Theme.App.Starting"
tools:targetApi="31" tools:targetApi="31"
android:name=".app.framework.App"> android:name=".app.framework.App"
android:requestLegacyExternalStorage="true">
<provider <provider
android:name="androidx.core.content.FileProvider" android:name="androidx.core.content.FileProvider"

View File

@ -135,20 +135,37 @@ class MainActivity : ComponentActivity() {
) { ) {
val multiplePermissionsState = val multiplePermissionsState =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
rememberMultiplePermissionsState( rememberMultiplePermissionsState(
listOf( listOf(
Manifest.permission.READ_MEDIA_VIDEO,
Manifest.permission.READ_MEDIA_IMAGES,
Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.BLUETOOTH_SCAN,
Manifest.permission.BLUETOOTH_CONNECT Manifest.permission.BLUETOOTH_CONNECT
) )
) )
} else {
rememberMultiplePermissionsState( }else{
listOf( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
Manifest.permission.ACCESS_FINE_LOCATION, rememberMultiplePermissionsState(
Manifest.permission.ACCESS_COARSE_LOCATION listOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.BLUETOOTH_SCAN,
Manifest.permission.BLUETOOTH_CONNECT
)
) )
) } 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) { if (multiplePermissionsState.allPermissionsGranted) {

View File

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