fix: 修改音频选择器
This commit is contained in:
parent
df08700257
commit
4bdfbb72f6
@ -143,6 +143,7 @@ dependencies {
|
||||
implementation 'com.github.JagarYousef:ChatVoicePlayer:1.1.0'
|
||||
// 图片查看器 https://github.com/XiaoGe-1996/ImageViewer
|
||||
implementation 'com.github.XiaoGe-1996:ImageViewer:v1.0.0'
|
||||
implementation 'com.github.majidarabi:AndroidFilePicker:0.2.1'
|
||||
}
|
||||
|
||||
kapt {
|
||||
|
||||
@ -14,6 +14,7 @@ import android.widget.AdapterView
|
||||
import android.widget.AdapterView.OnItemSelectedListener
|
||||
import android.widget.ArrayAdapter
|
||||
import android.widget.Toast
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.widget.addTextChangedListener
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
@ -31,6 +32,13 @@ import com.easytools.tools.FileUtils
|
||||
import com.easytools.tools.ResourceUtils
|
||||
import com.easytools.tools.ToastUtils
|
||||
import com.elvishew.xlog.XLog
|
||||
import com.github.file_picker.FileType
|
||||
import com.github.file_picker.ListDirection
|
||||
import com.github.file_picker.adapter.FilePickerAdapter
|
||||
import com.github.file_picker.data.model.Media
|
||||
import com.github.file_picker.extension.showFilePicker
|
||||
import com.github.file_picker.listener.OnItemClickListener
|
||||
import com.github.file_picker.listener.OnSubmitClickListener
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.gredicer.datetimepicker.DateTimePickerFragment
|
||||
import com.hjq.permissions.OnPermissionCallback
|
||||
@ -150,7 +158,9 @@ class ObtainMessageFragment: Fragment() {
|
||||
|
||||
binding.layerAudioResult.visibility = if (hasAudio) VISIBLE else GONE
|
||||
binding.layerGetAudio.visibility = if (hasAudio) GONE else VISIBLE
|
||||
// binding.llAudioPlay.visibility = if (hasAudio) VISIBLE else GONE
|
||||
if (!hasAudio) {
|
||||
binding.llAudioPlay.visibility = GONE
|
||||
}
|
||||
}
|
||||
)
|
||||
lifecycle.addObserver(recorderLifecycleObserver)
|
||||
@ -178,7 +188,7 @@ class ObtainMessageFragment: Fragment() {
|
||||
}
|
||||
|
||||
val sendToArray = mutableListOf<String>("绑定车辆1(LYVXFEFEXNL754427)")
|
||||
binding.edtSendTo.adapter = ArrayAdapter<String>(context!!,
|
||||
binding.edtSendTo.adapter = ArrayAdapter<String>(requireContext(),
|
||||
android.R.layout.simple_dropdown_item_1line, android.R.id.text1, sendToArray)
|
||||
binding.edtSendTo.onItemSelectedListener = object: OnItemSelectedListener {
|
||||
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
|
||||
@ -221,14 +231,14 @@ class ObtainMessageFragment: Fragment() {
|
||||
return
|
||||
}
|
||||
// 开始启动拍照界面
|
||||
photoHelper.setCrop(true).takePhoto(activity!!)
|
||||
photoHelper.setCrop(true).takePhoto(requireActivity())
|
||||
}
|
||||
|
||||
override fun onDenied(permissions: MutableList<String>, never: Boolean) {
|
||||
if (never) {
|
||||
Toast.makeText(activity, "永久拒绝授权,请手动授权拍照权限", Toast.LENGTH_SHORT).show()
|
||||
// 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||
XXPermissions.startPermissionActivity(context!!, permissions)
|
||||
XXPermissions.startPermissionActivity(requireContext(), permissions)
|
||||
} else {
|
||||
onCameraDenied()
|
||||
showRationaleForCamera(permissions)
|
||||
@ -239,13 +249,56 @@ class ObtainMessageFragment: Fragment() {
|
||||
}
|
||||
|
||||
binding.btnStartPhoto.setOnClickListener {
|
||||
photoHelper.setCrop(true).selectPhoto(activity!!)
|
||||
photoHelper.setCrop(true).selectPhoto(requireActivity())
|
||||
}
|
||||
|
||||
// 用户选择录音文件
|
||||
binding.btnSelectSound.setOnClickListener {
|
||||
photoHelper.setCrop(false).selectAudio(activity!!)
|
||||
// SingleAudioPicker.showPicker(context!!) {
|
||||
// photoHelper.setCrop(false).selectAudio(requireActivity())
|
||||
|
||||
showFilePicker(
|
||||
submitText = "确认",
|
||||
fileType = FileType.AUDIO,
|
||||
title = "选择音频文件",
|
||||
cancellable = true,
|
||||
listDirection = ListDirection.RTL,
|
||||
accentColor = ContextCompat.getColor(requireContext(), R.color.purple_700),
|
||||
titleTextColor = ContextCompat.getColor(requireContext(), R.color.purple_700),
|
||||
onSubmitClickListener = object : OnSubmitClickListener {
|
||||
override fun onClick(files: List<Media>) {
|
||||
// Do something here with selected files
|
||||
val audioFile = files.get(0).file
|
||||
if (!audioFile.parentFile.parentFile.absolutePath.equals(SystemConstant.SoundFolder)) {
|
||||
val copyResult = FileIOUtils.writeFileFromIS(File(SystemConstant.SoundFolder, audioFile.name), FileInputStream(audioFile))
|
||||
XLog.e("拷贝结果:"+copyResult)
|
||||
if (!copyResult) {
|
||||
ToastUtils.showToast("无法访问该文件,请重新选择其他文件")
|
||||
return
|
||||
}
|
||||
obtainMessageViewModel.updateMessageAudio(File(SystemConstant.SoundFolder, audioFile.name).absolutePath)
|
||||
} else {
|
||||
obtainMessageViewModel.updateMessageAudio(audioFile.absolutePath)
|
||||
}
|
||||
}
|
||||
},
|
||||
onItemClickListener = object : OnItemClickListener {
|
||||
override fun onClick(media: Media, position: Int, adapter: FilePickerAdapter) {
|
||||
if (!media.file.isDirectory) {
|
||||
if (!media.file.name.endsWith(".m4a")) {
|
||||
ToastUtils.showToast("只能选择.m4a文件")
|
||||
return
|
||||
}
|
||||
if (media.file.length()>2*1000*1000) {
|
||||
ToastUtils.showToast("文件不能超过2M!")
|
||||
return
|
||||
}
|
||||
adapter.setSelected(position)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
// SingleAudioPicker.showPicker(requireContext()) {
|
||||
// val audioFile = File(it.contentUri.path)
|
||||
// ToastUtils.showToast(audioFile.absolutePath)
|
||||
// if (!audioFile.parentFile.parentFile.absolutePath.equals(SystemConstant.SoundFolder)) {
|
||||
@ -293,7 +346,7 @@ class ObtainMessageFragment: Fragment() {
|
||||
if (never) {
|
||||
Toast.makeText(activity, "永久拒绝授权,请手动授权拍照权限", Toast.LENGTH_SHORT).show()
|
||||
// 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||
XXPermissions.startPermissionActivity(context!!, permissions)
|
||||
XXPermissions.startPermissionActivity(requireContext(), permissions)
|
||||
} else {
|
||||
onCameraDenied()
|
||||
showRationaleForCamera(permissions)
|
||||
@ -482,7 +535,7 @@ class ObtainMessageFragment: Fragment() {
|
||||
localAttachmentList.add(audioAttachment)
|
||||
}
|
||||
if (localAttachmentList.isNotEmpty()) {
|
||||
MaterialAlertDialogBuilder(context!!)
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle("提示")
|
||||
.setMessage("当前照片及音频内容需首先上传,是否尝试上传?")
|
||||
.setPositiveButton("确定", DialogInterface.OnClickListener { dialogInterface, i ->
|
||||
@ -535,7 +588,6 @@ class ObtainMessageFragment: Fragment() {
|
||||
|
||||
val confirmCallback = object: ObtainMessageViewModel.MyConfirmCallback {
|
||||
override fun onSucess() {
|
||||
findNavController().navigate(R.id.navi)
|
||||
}
|
||||
}
|
||||
|
||||
@ -551,12 +603,12 @@ class ObtainMessageFragment: Fragment() {
|
||||
fun showRationaleForCamera(permissions: MutableList<String>) {
|
||||
// showRationaleDialog(R.string.permission_camera_rationale, request)
|
||||
// Toast.makeText(context, "当前操作需要您授权相机权限!", Toast.LENGTH_SHORT).show()
|
||||
MaterialAlertDialogBuilder(context!!)
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle("提示")
|
||||
.setMessage("当前操作需要您授权拍摄权限!")
|
||||
.setPositiveButton("确定", DialogInterface.OnClickListener { dialogInterface, i ->
|
||||
dialogInterface.dismiss()
|
||||
XXPermissions.startPermissionActivity(activity!!, permissions)
|
||||
XXPermissions.startPermissionActivity(requireActivity(), permissions)
|
||||
})
|
||||
.show()
|
||||
}
|
||||
@ -567,12 +619,12 @@ class ObtainMessageFragment: Fragment() {
|
||||
}
|
||||
|
||||
fun showRationaleForRecorder(permissions: MutableList<String>) {
|
||||
MaterialAlertDialogBuilder(context!!)
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle("提示")
|
||||
.setMessage("当前操作需要您授权录音权限!")
|
||||
.setPositiveButton("确定", DialogInterface.OnClickListener { dialogInterface, i ->
|
||||
dialogInterface.dismiss()
|
||||
XXPermissions.startPermissionActivity(activity!!, permissions)
|
||||
XXPermissions.startPermissionActivity(requireActivity(), permissions)
|
||||
})
|
||||
.show()
|
||||
}
|
||||
|
||||
@ -158,6 +158,7 @@ class ObtainMessageViewModel: ViewModel() {
|
||||
}
|
||||
} else {
|
||||
ToastUtils.showToast(result.msg)
|
||||
XLog.d(result.msg)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
ToastUtils.showToast(e.message)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user