Экспорт
This commit is contained in:
parent
bc569581ad
commit
fb616a9f29
|
|
@ -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'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue